使用目的
- アプリでムービー再生中にバックグラウンドで
アセットバンドルのダウンロードを行うこと - Unityに標準で用意されている動画再生用のAPIである
Handheld.PlayFullScreenMovie
を使用すると
動画再生中にスレッドの処理を止めてしまう - Unityの処理を止めない上でモバイルで動画を再生できるアセットが必要だった
使用環境
- Unity 5.2.2f1
概要
- Unityで動画を再生するためのアセット
- モバイルのみサポート
- 音声の再生も可能
サポート(アセットストアから抜粋)
Unity
- Unity4.6.3以降
- エディタは非対応
- Unity4.Xの場合はPro版が必要
- Unity5.Xの場合はマルチスレッドレンダリングをサポート
- StreamingAssets、外部ストレージ、及びストリーミングサービスをサポート
モバイル
OS | バージョン | 解像度(一般) | 解像度(最新) |
---|---|---|---|
Android | 4.0 以上 | ~ 1920x1080 | 4kまで |
iOS | 6.0 以降 | ~ 1920x1080 | 2560x1440まで |
使用方法
- アセットをUnityプロジェクトにインポートする
- 「StreamingAssets」フォルダに再生したい動画を格納する(.mp4など)
- 「Assets/EasyMovieTexture/Prefab/FullScreen.prefab」をシーンに配置する
- スクリプトで「MediaPlayerCtrl」をGetComponentする
- 取得したMediaPlayerCtrlインスタンスのLoad関数を呼んでからPlay関数を実行する
using UnityEngine; public class ExampleClass : MonoBehaviour { public MediaPlayerCtrl mCtrl; private void Awake() { mCtrl.Load( "" ); mCtrl.Play(); } }
フルスクリーン再生で問題なければこれだけで再生可能です
設定
- Inspector上で下記の設定が可能です
- スクリプトで下記のコールバックを使用可能です
mCtrl.OnReady += () => Debug.Log( "再生準備完了" ); mCtrl.OnEnd += () => Debug.Log( "再生完了" );
備考
- マニュアルに記載されている設定は行ったが
設定しなくても動くかどうかは未確認
ProjectSettings 【Android】 - Internal Access : Auto -> Require - Write Access : Internal Only -> SD Card
- ムービー再生中に裏で大量にアセットバンドルをダウンロードしたところ
動画がカクついたりアプリが強制終了したため負荷は大きいかもしれません - 動画の手前にNGUIを表示することが可能
- Unity5で使用する場合は「Untiy5_Patch_iOS.unitypackage」を適用する必要がある