2016-11-30 82 views
1

我从Invoke方法调用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方法,但它给我一个错误。

回答

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();两行是绝对必要的,此方法才能正常工作。原因是我不知道的,但它不会工作。

+0

很高兴看到这不是一个孤立的问题(几个月前有同样的“奇怪”的行为)与**所需**每行两行。我怀疑Unity会以他们管理视频播放器的方式使用它自己的“WaitForEndOfFrame()”。 – Kardux

+0

它仍然存在! – Bijan

2

看看更接近文档:https://docs.unity3d.com/ScriptReference/Handheld.PlayFullScreenMovie.html

调用这个函数播放电影时将暂停统一。当播放结束后统一将恢复

意思是说,如果你要玩2个视频一前一后,你只需要做:

Handheld.PlayFullScreenMovie (path1,Color.black,FullScreenMovieControlMode.CancelOnInput); 
    Handheld.PlayFullScreenMovie (path2,Color.black,FullScreenMovieControlMode.CancelOnInput); 

在两个电话之间的等待可能虽然是必需的。

相关问题