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ファイルに含まれるキューが再生できました!

 

author:我妻