CRIWARE Unity Plugin Manual  Last Updated: 2024-04-24
簡易サウンドテスト

サンプル内容

概要

キューシートファイル(ACBファイル)内にあるキューの一覧をボタンで表示するサンプルスクリプトです。
簡易的なサウンドテストのような使い方を想定しています。

cri4u_samples_criatom_script02_main.png

操作方法

  • 画面の右側に並んだキュー名付きのボタンを押す
    押したボタンの音を再生します。すでにどれかの音が再生中の場合は停止して、ボタンの音を再生します。

シーン情報


ミドルウェア CRI ADX (CRI Atom)
サンプル Scriptサンプル:簡易サウンドテスト
格納場所 /cri/unity/samples/UnityProject/Assets/Scenes/criatom/script/ScriptSample02_SoundTest/Scenes
シーンファイル ScriptSample02_scene_SoundTest.unity
ADXデータのオリジナル データ:ピンボール


プログラムの解説

SoundTest.cs というスクリプトを貼り付けたカラのオブジェクトだけがあるプロジェクトです。
実行すると SoundTest.cs がキューシート(ACBファイル)からキュー(音)の一覧を取得して、ボタンとして表示します。
キューシート内の音を一覧で再生できるので簡易的なサウンドテストのような使い方が可能です。

サウンドテストスクリプトの説明

Start関数内でキューシートからキュー情報を一覧として取得して配列に記録します。
キューシート名はスクリプト内に直接記述してあります。
OnGUI関数内でキューの一覧をそれぞれの名前の書いたボタンとして表示します。
ボタンを押されると、それまでの再生を停止して、押されたボタンのキューを再生します。

スクリプトファイル: Scripts/SoundTest.cs
using System.Collections;
using System.Collections.Generic; // for an array
public class SoundTest : MonoBehaviour {
private List<string> cueNameList = new List<string> ();
private string cueSheetName = "PinballMain"; // CueSheet name
CriAtomSource atomSourceSe;
void Awake ()
{
}
CriAtomEx.CueInfo[] cueInfoList;
void Start ()
{
atomSourceSe = gameObject.AddComponent<CriAtomSource> ();
atomSourceSe.cueSheet = cueSheetName;
CriAtomExAcb acb = CriAtom.GetAcb (cueSheetName);
cueInfoList = acb.GetCueInfoList ();
foreach (CriAtomEx.CueInfo cueInfo in cueInfoList) {
cueNameList.Add (cueInfo.name);
}
CriAtomEx.AttachDspBusSetting("DspBusSetting_0");
CriAtom.SetBusAnalyzer(true); // Enable the level meter
}
public bool soundDebug = true;
void OnGUI()
{
if (Scene_00_SampleList.ShowList == true) {
return;
}
Scene_00_GUI.BeginGui("01/SampleMain");
/* Set UI skin. */
GUI.skin = Scene_00_SampleList.uiSkin;
if(soundDebug){
GUILayout.BeginArea(new Rect(Screen.width - 150, 0, 150, 300));
foreach (CriAtomEx.CueInfo cueInfo in cueInfoList) {
if(Scene_00_GUI.Button(cueInfo.name)){
atomSourceSe.Stop();
atomSourceSe.Play(cueInfo.name);
}
}
GUILayout.EndArea();
}
Scene_00_GUI.EndGui();
}
}

SoundTestスクリプトの機能と拡張について

本サンプルスクリプトは簡易的な実装を優先したため、実用的なサウンドテストとしてはいくつか機能が不足しています。
例えば、キューが多すぎた場合はボタン表示が画面内に収まらない可能性があります。
複数のキューを同時に再生する機能もないため、音楽を再生しながら効果音を鳴らすといった事もできません。
これらはサンプルスクリプトをちょっと変更するだけで改善が可能ですので、スクリプトの改善を試してみてください。

注意:ACFやACBファイルの登録方法について1

本サンプルスクリプトを実行するためには、Unityプロジェクト側でACFやACBファイルを前もって登録しておく必要があります。
簡単にACFやACBを登録するには、 Atom Browserウィンドウ から適当な音をCreateObjectして下さい。
この時に生成されたCriAtomSource付きゲームオブジェクトは削除して結構です。
重要なのは、これと一緒に生成されたCRIWAREというオブジェクトです。
Inspectorで確認すると、ACFやACBファイルの登録が完了している事がわかります。

cri4u_samples_criatom_script02_criware.png

注意:ACFやACBファイルの登録方法について2

Atom Browserウィンドウ を使わずにACF/ACBの登録をするには、次のような手順でオブジェクトの作成や設定を行ってください。
  1. Unity Editor のCRIメニューから CRIWARE Library Initializer と CRIWARE Error Handler をCreateします。
  2. 適当なGameObjectを生成します。カラのGameObjectでもかまいません。
  3. Hierarchyウインドウで(2)のGameObjectを選択し、ComponentメニューからCRIWARE -> CRI Atom を選択します。

    cri4u_samples_criatom_script02_component_atom.png

  4. (2)のGameObjectのInspectorにCRI Atomコンポーネントが追加されています。
  5. Inspectorで CRI Atomコンポーネントの"ACF File"欄に StreamingAssets内にある ACFファイルの名前を入力します。

    cri4u_samples_criatom_script02_acf.png

  6. Inspectorで CRI Atomコンポーネントの"Add CueSheet"ボタンを押して、以下の情報を入力します。
    パラメータの詳しい説明は CRI Atom を参照してください。
  • "Name"欄:キューシート名
  • "ACB File"欄: StreamingAssets内にある ACBファイルの名前
  • "AWB File"欄: StreamingAssets内にある AWBファイルの名前(ファイルが存在する場合のみ)
    cri4u_samples_criatom_script02_criware.png

    これでACF/ACBの準備は完了です!
    SoundTest.cs を適当なGameObjectに貼り付けて実行するとキューの一覧が表示されます。