脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

EasyMovieTextureで動画をポーズ/再開させる

前回のポストの続きになります
portaltan.hatenablog.com

前回は起動したら単純に一回だけ再生するというシンプルすぎるアプリでしたが、今回は自前のスクリプトを貼りつけて、ユーザの入力に応じてポーズなどの処理をできるようにしましょう

1. デフォルトのスクリプトの再生設定を削除

  • Sphere100のMedia Player CtrlのInspector上でStr File Nameの項目を削除します

(これで自動再生されなくなります)
f:id:portaltan:20160712145358p:plain

2. 自前のスクリプトの作成

  • 今回はEasyTest.csという名前にしました
using UnityEngine;
using System.Collections;

public class EasyTest : MonoBehaviour {
	public MediaPlayerCtrl EasyMovieTex;

	void Start () {
		EasyMovieTex.Load ("slider.mp4");
		EasyMovieTex.Play ();
	}
}

3. スクリプトをSphere100へ貼りつけます

  • EasyTest.csスクリプトをhierarchyビューのSphere100へD&Dで貼りつけます
  • Inspector上のEasyTest(Script)で、Easy Movie TexにSphere100をアサインします

f:id:portaltan:20160712150312p:plain

ここまでで以前同様に起動したら一回だけ再生する状態になりました

4. ポーズ処理の追加

再生中にスペースを押したらポーズし、ポーズ中にスペースを押すと再開するような処理をUpdate内に書いていきます

using UnityEngine;
using System.Collections;

public class EasyTest : MonoBehaviour {
	public MediaPlayerCtrl EasyMovieTex;

	void Start () {
		EasyMovieTex.Load ("slider.mp4");
		EasyMovieTex.Play ();
	}

	void Update () {
		if (EasyMovieTex.GetCurrentState ().ToString () == "NOT_READY") {
			Debug.Log ("Preparing");
		} else if (EasyMovieTex.GetCurrentState ().ToString () == "END") {
			Debug.Log ("Finished");
		}

		if (Input.GetKeyUp (KeyCode.Space)) {
			switch (EasyMovieTex.GetCurrentState ().ToString ()) {
			case "PLAYING":
				EasyMovieTex.Pause ();
				break;		
			case "PAUSED":
				EasyMovieTex.Play ();
				break;
			}
		}
	}
}

以上です。
最初の4行は再生の準備中と終了時にはログを表示させています