如何在 Unity 中单击按钮时激活 RawImage?

Posted

技术标签:

【中文标题】如何在 Unity 中单击按钮时激活 RawImage?【英文标题】:How to Activate RawImage on button click in Unity? 【发布时间】:2021-03-10 13:42:54 【问题描述】:

我刚开始学习 Unity 并尝试创建一个视频库,现在我创建了一个按钮,图片上显示了红十字。更大的矩形是包含我的视频的原始图像。 我想在按钮上添加一个缩略图,然后单击该按钮 RawImage 将启动相应的视频。目前它正在按上述方式工作,但只要我激活 RawImage。我不希望在单击按钮之前看到 RawImage。

现在这就是我所拥有的;

    RawImage rawImage1;
    public void StartVideoOne()
    
        rawImage1.SetActive(true);
        videoPlayer.Play();

    

但是,如果我尝试在按钮 onClick 调用期间激活 RawImage,则不会启动视频。我该如何解决这个问题?

【问题讨论】:

你是如何给 rawimage 赋值的?有什么错误吗? 【参考方案1】:

首先,您不能在RawImage 引用上使用SetActive,它必须是GameObject。我假设你只把它放在代码 sn-p 中,所以很清楚发生了什么。

我在简单的测试项目中设置了VideoPlayer,您的代码可以很好地激活对象并播放视频,因此您可能会错过以下几点:

您是否检查过您的按钮是否有效?你的画布中有GraphicRaycaster 组件吗?您是否通过检查器或代码订阅了按钮的 onClick 事件?现场有EventSystem吗? 如果您在VideoPlayer 中的渲染模式是渲染纹理,您是否将您的RawImage 指定为目标纹理?

这是您需要拥有的示例:

和代码:

public class PlaybackController : MonoBehaviour

    public Button playButton;
    public RawImage rawImage1;
    public VideoPlayer videoPlayer;

    private void OnEnable()
    
        playButton.onClick.AddListener(StartVideoOne);
    

    private void OnDisable()
    
        playButton.onClick.RemoveListener(StartVideoOne);
    

    private void StartVideoOne()
    
        rawImage1.gameObject.SetActive(true);
        videoPlayer.Play();
    

【讨论】:

以上是关于如何在 Unity 中单击按钮时激活 RawImage?的主要内容,如果未能解决你的问题,请参考以下文章

Unity - 单击重新启动按钮后如何重新启动乐谱?

如何通过使用引导程序和 HTML/CSS 单击按钮来激活按钮的切换?

如果使用 jquery 单击按钮,如何激活弹出模式?

jquery 在单击单选按钮时选择并激活特定类的所有项目

按钮单击时的 Unity 动画返回空闲动画

Unity3d 4.6 GUI - 按钮单击脚本从预制中消失