CRI ADX2(Unity)
中級編02 スクリプトだけで音を鳴らす
			前回は、CriAtomSourceとCriAtomExPlayerの使い分けについて説明しました。
CriAtomExPlayerは、作成から再生制御までが全てスクリプト内ででき、単純な再生制御のみを行う場合や、ゲームシーンとは独立したオーディオマネージャークラスを作成する場合などに便利です。
今回はCriAtomExPlayerを使って、音声を鳴らす方法について説明します。
必要なゲームオブジェクト
シーン上に以下のゲームオブジェクトを追加します。
すでに配置されている場合はそのままで結構です。
- CriWareInitializer
- CriWareErrorHandler
- CriAtomコンポーネントが追加されているゲームオブジェクト
これらのゲームオブジェクトの追加方法は、以下の記事で紹介されています。
UnitySDK入門編.03 / 初期化設定を行う
必要なゲームオブジェクトをシーンに配置したら、CriAtomコンポーネントの[ACB File]にacbファイルが登録されていることを確認しましょう。

これでライブラリの初期化とキューシートのロードまでは準備ができました。
スクリプトを追加する
今回使用するサンプルコードはこちらになります。
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using CriWare;
public class CuePlayAtomExPlayer : MonoBehaviour
{
    private CriAtomEx.CueInfo[] cueInfoList;
    private CriAtomExPlayer atomExPlayer;
    private CriAtomExAcb atomExAcb;
    IEnumerator Start()
    {
        /* キューシートファイルのロード待ち */
        while (CriAtom.CueSheetsAreLoading) {
            yield return null;
        }
        /* AtomExPlayerの生成 */
        atomExPlayer = new CriAtomExPlayer();
        /* Cue情報の取得 */
        atomExAcb = CriAtom.GetAcb("CueSheet_0");
        cueInfoList = atomExAcb.GetCueInfoList();
    }
    private void OnDestroy()
    {
        atomExPlayer.Dispose();
    }
    void OnGUI()
    {
        /* キュー名再生ボタンの生成 */
        for (int i = 0; i < cueInfoList.Length; i++) {
            if (GUI.Button(new Rect(Screen.width - 150, (Screen.height / cueInfoList.Length) * i, 150, Screen.height / cueInfoList.Length), cueInfoList[i].name)) {
                /* 再生中の場合は停止 */
                if(atomExPlayer.GetStatus() == CriAtomExPlayer.Status.Playing) {
                    atomExPlayer.Stop();
                }
                atomExPlayer.SetCue(atomExAcb, cueInfoList[i].name);
                atomExPlayer.Start();
            }
        }
    }
}
適当なゲームオブジェクトに、CuePlayAtomExPlayer.csを追加します。

サンプルコードの解説
プレーヤーの作成
/* AtomExPlayerの生成 */
atomExPlayer = new CriAtomExPlayer();
上記のようにスクリプトからCriAtomExPlayerインスタンスを作成するだけで、準備OKです。
キュー情報リストの取得
/* Cue情報の取得 */
atomExAcb = CriAtom.GetAcb("CueSheet_0");
cueInfoList = atomExAcb.GetCueInfoList();
CriAtom.GetAcb関数にキューシート名(.acbのファイル名)を指定することで、キュー情報を取得できます。
サンプルコードでは、キューシートに含まれるキュー名を参照したいため、さらにキュー情報リストを取得しています。
キューの設定と再生
/* プレーヤーにキューを設定して再生開始 */
atomExPlayer.SetCue(atomExAcb, cueInfoList[i].name);
atomExPlayer.Start();
先ほど取得したキュー情報をSetCue関数に渡した後、Start関数を呼ぶことで音声を再生することができます。
音を鳴らす
Unityを実行すると、画像のようにキュー名ボタンが画面右側に表示されます。

キュー名ボタンを押下すると、acbファイルに含まれるキューが再生できました!
