Unityで動画を再生させるのがすごい簡単だったので驚いたのですよ。
平面オブジェクトに動画を貼り付けてそれを再生させたり停止させたりします。
スクリプトから動画を再生したり停止したりいろいろやりたい
まず
using UnityEngine.Video; これを冒頭で宣言
次に
private VideoPlayer videoPlayer;
再生したいタイミングで
videoPlayer = GameObject.Find("hogePlane").GetComponent<VideoPlayer>();
videoPlayer.Play();
動画停止は
videoPlayer.Stop();
ポーズは
videoPlayer.Pause();
再生が終わったらいろいろやる方法
再生が終わったら次の動画、とかやるのに使える方法はコレ。
テストとして再生が終わったら動画パネルオブジェクトを見えなくしてみる。
基本的には動画が再生中かどうかを判定するには
videoPlayer.isPlaying を使うみたい。
これがtrue なら再生中、 false なら再生されていない らしい。
で、ifで videoPlayer.isPlaying == false だけで判定しようとすると動画が再生されるまで少しタイムラグがあるみたいで動画が再生される前に falseと判定されてif文が実行されてしまった。
そこでdeltaで数を数えて動画が再生されている頃からif判定を始めるようにすると思い通りの結果になった。
GameObject ActPanel; //Planeの大きさを変えるのに使う float delta = 0; //数を数えるのに使う void Update() { delta += Time.deltaTime; //数を数える if ((videoPlayer.isPlaying == false)&(delta>2)) { ActPanel = GameObject.Find("hogePlane"); //動画Planeオブジェクトを見つける ActPanel.transform.localScale = Vector3.zero; //見えなくする } }
↑なんか & が 勝手に & amp; に変えられているみたいです。
正しい表示はコレ
if ((videoPlayer.isPlaying == false)&(this.delta>2))
動画を再生すると WindowsVideoMedia error という警告が出る問題について
.
なんか動画を再生すると映像にグレーのレイヤーがかかっているみたいに暗く表示される問題について