Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 有没有办法在视频播放器下设置UI元素?_Unity3d - Fatal编程技术网

Unity3d 有没有办法在视频播放器下设置UI元素?

Unity3d 有没有办法在视频播放器下设置UI元素?,unity3d,Unity3d,我正在Unity中制作一个2D游戏,游戏开始时播放视频。问题是UI在视频之上,因为这是我第一次使用Unity,所以我不知道如何修复它 我尝试将视频播放器的渲染模式设置为“摄影机靠近平面”,但UI仍然位于视频上方 有没有办法在视频播放器下设置UI元素,或者在视频停止播放之前隐藏UI元素?如何在UI下渲染视频播放器 通过在VideoPlayer上引用渲染纹理,然后在要渲染的RawImage上引用,可以在RawImage上渲染视频播放器。通过这种方式,视频播放器基本上变成了另一个UI元素,您可以根据需

我正在Unity中制作一个2D游戏,游戏开始时播放视频。问题是UI在视频之上,因为这是我第一次使用Unity,所以我不知道如何修复它

我尝试将视频播放器的渲染模式设置为“摄影机靠近平面”,但UI仍然位于视频上方

有没有办法在视频播放器下设置UI元素,或者在视频停止播放之前隐藏UI元素?

如何在UI下渲染视频播放器 通过在
VideoPlayer
上引用
渲染纹理
,然后在要渲染的
RawImage
上引用,可以在
RawImage
上渲染视频播放器。通过这种方式,视频播放器基本上变成了另一个UI元素,您可以根据需要对其他UI进行排序-将其放置在
层次结构中的其他UI元素下方
以将其呈现在其他UI元素之上

例子 以下是视频播放器、RawImage和层次结构的
检查器中的情况。

如何在视频播放器播放时隐藏用户界面 您可以使用
.SetActive()
方法禁用包含所有UI的
画布
元素。您只需订阅
VideoPlayer
events-
started
looppointreated
即可附加必要的行为

例子
最简单的方法是通过将setactive设置为false临时禁用ui画布。然后在视频停止播放后再次返回。
using UnityEngine;
using UnityEngine.Video;

public class HideTargetWhilePlayingVideo : MonoBehaviour
{
    [SerializeField]
    private GameObject target = null;

    [SerializeField]
    private VideoPlayer videoPlayer = null;

    private void Start()
    {
        videoPlayer.started += OnVideoStarted;
        videoPlayer.loopPointReached += OnVideoStopped;
    }

    private void OnVideoStarted(VideoPlayer source)
    {
        target.gameObject.SetActive(false);
    }

    private void OnVideoStopped(VideoPlayer source)
    {
        target.gameObject.SetActive(true);
    }

    private void OnDestroy()
    {
        if (videoPlayer)
        {
            videoPlayer.started -= OnVideoStarted;
            videoPlayer.loopPointReached -= OnVideoStopped;
        }
    }
}