
【Unity】Video Playerを使用して動画を再生させる
デジゲー博用にタイトル画面で放置すると動画が流れるようにしたいなと思いVideo Playerを使用して動画を表示するようにしてみました。
※この記事を作成するにあたって下記サイトさんの記事を参考にさせて頂きました。
[Unity]Video Playerを使って動画を再生する方法
デジゲー博用にタイトル画面で放置すると動画が流れるようにした。Unityで動画ファイルを再生する方法をnoteにまとめておきました。
— kt. (@xxxx_kt_xxxx) November 6, 2023
【Unity】Video Playerを使用して動画を再生させる|kt. @xxxx_kt_xxxx #note https://t.co/Dkkz8KgiOk#デジゲー博 #gamedev #MACHINAXGHOST #マキナクロスゴースト pic.twitter.com/BoGMuTWsVf
まずは表示させたい動画ファイルをプロジェクトの任意の場所に保存します。ファイル形式はmp4、wmv、movファイルなどが使えるようです。
hierarchy上で右クリック→UI→Raw Imageを選択します。

作成したRawImageを選択してSizeを調整し、AddComponentでVideo Playerを追加します。

追加したVideo PlayerのMovieClipの欄に再生したいビデオファイルを選択します。

Projectビューの左上にある+を押してRender Textureを作成します。

作成したRender TextureのSizeを再生させたい動画ファイルの解像度にしておきます。

最初に作成したRawImageを選択してTextureの欄とTarget Textureの欄にRender Textureを指定します。

ここまで指定出来たら再生ボタンを押と動画が流れると思います。

現状だと動画はUIの方に表示されていると思います。これをゲーム画面の方に表示させたい場合は動画ファイルがあるCanvasを選択してRenderModeをWorldSpaceに変更してSortingLayerを一番手前にしてScaleを良い感じに変更します。

あとはプレファブ化すれば好きな時に呼び出せるのですが、プレファブ化するとEventCameraが指定出来なくなるんですよね。
カメラが一つなら指定しなくても問題ないのですが、複数ある場合はスクリプトで指定する事が出来ます。
private Camera targetCamera;
void Start()
{
targetCamera = GameObject.Find("Main Camera").GetComponent<Camera>();
GameObject.Find("Canvas_prefab(Clone)").GetComponent<Canvas>().worldCamera = targetCamera;
}
"Main Camera"は指定したいカメラを指定します。
"MovieCanvas_prefab(Clone)はプレファブ化したファイル名を指定すれば好きなカメラを指定出来るようになります。