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