Unityでムービー再生

Unityでムービー再生するにはMovieTextureを使います。
Proバージョンのみの対応です。
取り敢えずローカルにあるファイル再生版でGUITextureに貼りつけてみました。
サポートされているファイルタイプは、QuickTimeが再生できるものに限られているらしい。(.mov, .mpg, .mpeg, .mp4, .avi, .asf)


ムービーファイルをプロジェクトに追加すると、自動的にインポートされOggTheoraフォーマットに変換されます。
今回はGUITextureに貼りつけるので、GUITextureのオブジェクトを作って、それに下記のスクリプト(ControlMovie.csとする)を適用します。

using UnityEngine;
using System.Collections;

public class ControlMovie : MonoBehaviour
{
  public MovieTexture movieTexture;

  void Start()
  {
    guiTexture.texture = movieTexture;
    movieTexture.Play();
  }

  void Update()
  {
    if (Input.GetButtonDown("Fire1")) {
      movieTexture.Pause();
    } else if (Input.GetButtonDown("Fire2")) {
      movieTexture.Play();
    }
  }
}


movieTextureには、先程インポートして変換されたムービーテクスチャをInspectorから選択。
ムービーテクスチャをインポートした時に、オーディオトラックも一緒にインポートされてムービーテクスチャのオーディオクリップ子要素となります。
このファイルをGameObjectに付加しておくと、MovieTexture.Play()呼んだ時に音声が一緒に再生されますし、MovieTexture.Stop()を呼んだ時は一緒に停止されます。


最初再生した時になんか元ソースより音が小さいなぁと思ったら、これが原因でした。
取り敢えず、Min Distanceをいじって回避。