【Unity】動画の停止と終了判定をする

投稿者: | 2020-08-21

動画の再生中にキー入力で停止/再生し、動画が終わると自動で次のシーンをロードするようにしました。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.Video;

public class LastSceneScript : MonoBehaviour
{
    [SerializeField] VideoPlayer videoPlayer;
    [SerializeField] GameObject menu;

    bool videoPause = false;


    
    // Start is called before the first frame update
    void Start()
    {
        videoPlayer.isLooping = true;
        menu.SetActive(false);
        Cursor.visible = false;

        videoPlayer.loopPointReached += FinishPlayingVideo;
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Escape))
        {
            videoPause = !videoPause;

            // メニューとカーソルの表示
            menu.SetActive(videoPause); 
            Cursor.visible = videoPause;

            // ビデオの停止
            if (videoPause)
            {
                videoPlayer.Pause();
            }
            else {
                videoPlayer.Play();
            }

        }     
    }

    public void FinishPlayingVideo(VideoPlayer vp)
    {
        videoPlayer.Stop();
        SceneManager.LoadScene("StartMenu");
    }
}

シーンが始まると動画が再生されてカメラに表示されるようになっています。停止した時に出すメニューとカーソルをStart()で非表示にしておきます。再生の終了判定のために、動画が必ずループ再生されるようにします。

そして、動画が終端に達した時に次のシーンを読み込むメソッドが呼び出されるようにします。このメソッドは引数にVideoPlayerが渡されないといけません。

同じメソッドを呼ぶボタンのインスペクタでも、引数のところにVideoPlayerをアタッチします。

そして、キー入力のたびにメニューとカーソルの表示/非表示とビデオの停止/再生をします。これで簡単に動画の停止と終了判定ができました。

参考:
http://fantom1x.blog130.fc2.com/blog-entry-244.html?sp
https://atsushishi.xyz/2017/12/videoplayer_support/

コメントを残す

メールアドレスが公開されることはありません。