Unityを動画を再生する標準機能であるVideo Playerの使い方を紹介します。
この記事では、実際に3DオブジェクトやUIにVideo Playerで動画を描画する手順を詳細に説明します。
サンプルアプリ(WebGL)
※プレイするときは一度画面をクリックしてください。
別ページでプレイする場合はこちらから
https://chiritsumo-blog.com/wp-content/uploads/webgl/VideoPlayer/index.html
この記事での対象プラットフォームはStandaloneを想定しています。
WebGLでの使用方法は以下をご確認ください。
環境
- Windows 10 Home
- Unity Version 2019.2.17f1
動画をインポートする
再生する動画ファイルをプロジェクトに追加します。
インポートした動画ファイルはVideo Clip(ビデオクリップ)として扱われ、Video Playerのソースとして使用することができます。
動画を描画するオブジェクトを設置
今回は動画の描画対象用に、3Dオブジェクトの「Sphere」「Cube」「Plane」とUIの「RawImage」を設置します。
3DオブジェクトにVideo Playerを追加
「Sphere」「Cube」「Plane」のゲームオブジェクトに「Video Player」コンポーネントを追加していきます。
先ほどプロジェクトにインポートしたVideo ClipをHierarchyビューの各オブジェクトにドラッグ&ドロップでアタッチします。
Video Clipをオブジェクトにドラッグ&ドロップでアタッチすると、自動的に「Video Player」コンポーネントが追加されます。
UI「RawImage」にVideo Playerを追加
UIのRawImageに「Video Player」コンポーネントを追加する方法は上記の3Dオブジェクトの時と少し異なります。
まず、先ほどと同じようにVideo ClipをRaw Imageにドラッグ&ドロップでアタッチします。
次に、Projectビューを右クリック Create > Render Texture をクリックします。
作成したRender Textureを、RawImageオブジェクトの以下の2か所に設定します。
- Raw Image コンポーネント > Texture
- Video Player コンポーネント > Target Textrue
上記の設定で、Render Textureを介してRaw Imageに動画を描画することが可能です。
Video Playerのスクリプトによる制御
Video Playerはスクリプトから制御することも可能です。
使用したスクリプトの全文
今回実装したスクリプトを参考までに記載します。
処理内容は、各オブジェクトのVideo Playerを「再生」「一時停止」「停止」制御を行います。
using System.Collections.Generic; using UnityEngine; using UnityEngine.Video; public class PlayerController : MonoBehaviour { /// <summary> /// 制御するVideo Playerのリスト /// </summary> [SerializeField] private List<VideoPlayer> playerList; /// <summary> /// 再生 /// </summary> public void Play() { foreach(VideoPlayer player in playerList) { if (!player.isPlaying) { player.Play(); } } } /// <summary> /// 一時停止 /// </summary> public void Pause() { foreach (VideoPlayer player in playerList) { if (player.isPlaying) { player.Pause(); } } } /// <summary> /// 停止 /// </summary> public void Stop() { foreach (VideoPlayer player in playerList) { player.Stop(); } } }
処理内容の解説
制御するVideo Player のリスト
下記のplayerListを記述することで、Inspectorウィンドウで複数個のVideoPlayerを設定できます。
[SerializeField] private List<VideoPlayer> playerList;
再生
Play()関数を「再生」ボタンから呼び出しています。
Video Playerの再生は以下のコードで行います。
player.Play();
一時停止
Stop()関数を「停止」ボタンから呼び出しています。
Video Playerの一時停止は以下のコードで行います。
player.Stop();
参考:
https://docs.unity3d.com/ja/2018.4/Manual/class-VideoPlayer.html
https://docs.unity3d.com/ja/2018.4/Manual/class-VideoClip.html
よく読まれている記事
コメント
[…] […]