Unity5.6版本可以使用Unity自带的VideoPlayer组件,VideoPlayer组件可以很简便地实现播放视频功能,但是对于一些要求稍微高点的视频播放需求存在坑。本人使用的Unity版本是5.6.5p4
1)加载视频资源时会卡主线程
VideoPlayer加载视频资源时会卡主线程,如果需求是在同一个游戏界面内无缝切换多个视频,则需要打开界面前预加载所有视频资源并暂停在第一帧。
查阅Unity官方文档 https://docs.unity3d.com/560/Documentation/ScriptReference/Video.VideoPlayer.html
videoPlayer.targetTexture = RenderTexture.GetTemporary(
Screen.width, Screen.height, 0, RenderTextureFormat.RGB565);
videoPlayer.playOnAwake = true
videoPlayer.waitForFirstFrame = true
videoPlayer.Play();
坑点一:使用以上组合RenderTexture不会渲染出来第一帧,会黑屏(按照文档说明这样应该满足需求才对,十分坑- -),所以尝试在加载完成后暂停在第一帧。
public static VideoPlayer AddVideoUnit(GameObject go, string videoPath)
{
if (go == null) return null;
var videoPlayer = go.GetComponent<VideoPlayer>();
if (videoPlayer == null)
videoPlayer = go.AddComponent<VideoPlayer