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