簡易サウンドテスト

サンプル内容

概要

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

cri4u_samples_criatom_script02_main.png

操作方法

シーン情報


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


プログラムの解説

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

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

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

スクリプトファイル: Scripts/SoundTest.cs
using UnityEngine;
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を登録するには、CRI Atom Windowから適当な音をCreateObjectして下さい。
この時に生成されたCriAtomSource付きゲームオブジェクトは削除して結構です。
重要なのは、これと一緒に生成されたCRIWAREというオブジェクトです。
Inspectorで確認すれば、ACFやACBファイルの登録が完了している事がわかります。

cri4u_samples_criatom_script02_criware.png

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

CRI Atom Window を使わずに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 (Script)が追加されています。 (5) Inspectorで CRI Atom (Script) の"ACF File"欄に StreamingAssets内にある ACFファイルの名前を入力します。

cri4u_samples_criatom_script02_acf.png

(5) Inspectorで CRI Atom (Script) の"Add CueSheet"ボタンを押して、"Name"欄にキューシート名を、"ACB File"欄に StreamingAssets内にある ACBファイルの名前を入力します。AWBファイルがある場合はそれも指定します。

cri4u_samples_criatom_script02_add_cuesheet.png

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



CRI Middleware logo Copyright (c) 2012-2018 CRI Middleware Co., Ltd. CRI ADX2 LE マニュアル (for Unity) SDKVer.2.10版