CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
简单的音频测试

范例的描述

概述

该范例脚本为CueSheet文件(ACB文件)中的每个Cue都显示了一个按钮。点击按钮便会播放相对应的Cue。
该脚本可用于简单的音频测试。

cri4u_samples_criatom_script02_main.png

操作

  • 点击在屏幕右侧,含有Cue名称的按钮。
    播放所点击的按钮的音频。如果另一个音频正在播放,该音频将停止播放,然后播放所点击的按钮的音频。

场景信息


中间件 CRI ADX (CRI Atom)
范例 Script sample: Simple sound test(脚本范例:简单的音频测试)
存储路径 /CRIWARE/SDK/unity/samples/UnityProject/Assets/Scenes/criatom/script/ScriptSample02_SoundTest
场景文件 ScriptSample02_scene_SoundTest.unity
原始ADX数据 数据:弹球


程序的描述

改程序仅含有一个添加SoundTest.cs脚本的空白对象。
当执行程序时,SoundTest.cs从CueSheet(ACB文件)中获取Cue(音频)的列表,并在按下按钮时显示它们。
该程序可用于简单的音频测试功能,因为CueSheet的音频可以从列表中快速播放。

音频测试脚本的描述

Start功能从CueSheet中获取一列表的Cue,并将它们存储于一列。
CueSheet的名称将在脚本中描述。
在Cue列表中,OnGUI功能以按钮形式显示了各个Cue的名称。
当点击了某个按钮后,还在进行的回放将会停止,随后与Cue相对应的按钮将被播放。

脚本文件 Scripts/SoundTest.cs
using System.Collections;
using System.Collections.Generic; // 用于一列
public class SoundTest : MonoBehaviour {
private List<string> cueNameList = new List<string> ();
private string cueSheetName = "PinballMain"; // CueSheet名称
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); // 开启电平计
}
public bool soundDebug = true;
void OnGUI()
{
if(soundDebug){
foreach (CriAtomEx.CueInfo cueInfo in cueInfoList) {
if(GUILayout.Button(cueInfo.name)){
atomSourceSe.Stop();
atomSourceSe.Play(cueInfo.name);
}
}
}
}
}

SoundTest脚本的功能和扩展

由于简单地执行脚本更为重要,因此该范例脚本缺少了一些功能,用户需在实际的音频测试脚本中考虑该问题。
举例,当出现太多Cue时,屏幕可能无法容纳所有的按钮。
脚本无法播放音效并覆盖音乐声,因为它并没有同时播放多个Cue的功能。
请尝试优化脚本:做一些细小的更改并非难事。

注意:注册ACF和ACB文件 (1)

在运行该范例脚本前,必须将ACF和ACB文件注册至Unity项目。
要简单的注册ACF或ACB,请在 Atom Browser窗口 中对任意的音频执行CreateObject。
此时生成的带有CriAtomSource的GameObject可以马上删除。
重要的是同时被创建的名为 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。
  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 Cue Sheet”按钮并输入以下信息。
    关于参数的详细说明,请参照 CRI Atom
  • “Name”栏:Cue Sheet名称
  • “ACB File”栏:StreamingAssets 中ACB文件的名称
  • “AWB File”栏:StreamingAssets 中AWB文件的名称(仅当文件存在时)
    cri4u_samples_criatom_script02_criware.png

    这样ACF和ACB的准备就完成了。
    将 SoundTest.cs 粘贴到任意的 GameObject 中运行就可以查看Cue列表。