首页 > 解决方案 > 如何在 Unity 中单击按钮时激活 RawImage?

问题描述

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

现在这就是我所拥有的;

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

    }

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

标签: c#visual-studiounity3duser-interface

解决方案


首先,您不能SetActiveRawImage参考上使用,它必须是GameObject. 我假设您只将它放在代码片段中,因此很清楚发生了什么。

我设置了一个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();
    }
}

推荐阅读