我从调用方法调用ChangeVideo()
:
InvokeRepeating ("ChangeVideo", 1, TimeToChangeImage);
public void ChangeVideo()
{
public string[] VedioPaths ={"aa","bb"}
System.Random random1 = new System.Random();
PathNO1 = random1.Next (VedioPaths.Length);
ConfirmPath1 = VedioPaths[PathNO1];
Handheld.PlayFullScreenMovie (ConfirmPath1,Color.black,FullScreenMovieControlMode.CancelOnInput);
}
我需要在完成另一个视频后立即播放下一个视频。我怎样才能做到这一点?我尝试了很多方法但每次构建时都会出错。
我有一个字符串数组,我随机选择一个视频;一旦第一个视频结束,下一个视频应该开始播放。我尝试使用invoke方法,但它给了我一个错误。
答案 0 :(得分:3)
如果您想在协程中加载视频:
void Start()
{
StartCoroutine(LoadVideos());
}
IEnumerator LoadVideos()
{
//first vid
Handheld.PlayFullScreenMovie("vid1.mp4", Color.black, FullScreenMovieControlMode.CancelOnInput);
yield return new WaitForEndOfFrame();
yield return new WaitForEndOfFrame();
//second vid
Handheld.PlayFullScreenMovie("vid2.mp4", Color.black, FullScreenMovieControlMode.CancelOnInput);
yield return new WaitForEndOfFrame();
yield return new WaitForEndOfFrame();
}
请注意,此方法必须使用两行yield return new WaitForEndOfFrame();
才能使用此方法。原因不为我所知,但它不会起作用。
答案 1 :(得分:2)
仔细阅读文档:https://docs.unity3d.com/ScriptReference/Handheld.PlayFullScreenMovie.html
调用此功能将在电影播放期间暂停Unity。播放完成后,Unity将恢复
这意味着,如果你想一个接一个地播放2个视频,你只需要这样做:
Handheld.PlayFullScreenMovie (path1,Color.black,FullScreenMovieControlMode.CancelOnInput);
Handheld.PlayFullScreenMovie (path2,Color.black,FullScreenMovieControlMode.CancelOnInput);
虽然可能需要在两次通话之间等待。
答案 2 :(得分:0)
即使没有循环,最新的VideoPlayer也有一种非常简便的方法来检测循环点。
public VideoPlayer videoPlayer;
public VideoClip[] videos;
public VideoClip theVideo;
public static int index;
bool isPlaying = true;
void Start()
{
index = 0;
videoPlayer = gameObject.GetComponent<VideoPlayer>();
videoPlayer.loopPointReached += CheckOver;
}
void CheckOver(UnityEngine.Video.VideoPlayer vp)
{
print("Video Is Over");
index += 1;
if (index >= videos.Length)
{
index = 0;
}
theVideo = videos[index];
videoPlayer.clip = theVideo;
videoPlayer.Play();
isPlaying = true;
}