如何在第一个视频停止时自动播放下一个视频

时间:2016-11-30 14:13:44

标签: unity3d

我从调用方法调用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 个答案:

答案 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;
}