CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
以游戏对象为单位控制发声数
对于诸如“同一个角色发出的声音”这样的Cue,通常会在AtomCraft中设置“类别Cue限数”,这样注册在同一类别的Cue同时播放数不会超过所定数量。
但是,例如在格斗游戏中使用相同角色进行对战时,这样的发声数限制会导致出现同时只能播放其中一名玩家声音的情况。
如果您想以“游戏中的对象”为单位限制各自的发声数,可以按照以下步骤使用“声音对象(Sound Object)”功能。

1. 为Cue指定类别Cue限数
使用AtomCraft工具创建一个类别,开启其发声数限制选项,然后对要限制发声数的Cue指定此类别。

adx2u_practice_cuelimit.png

2. 将 AtomExPlayer 与声音对象关联
在脚本中生成一个与游戏中的对象对应的 CriWare.CriAtomExSoundObject ,并注册一个单独的 CriWare.CriAtomExPlayer
这样,AtomCraft中设置的Cue限数将分别应用于每个声音对象,并且各播放器将能够同时播放Cue。
下面的示例代码中,我们将单个 CriWare.CriAtomExSoundObject 分别与属性编辑器中注册的各个 CriWare.CriAtomSource 相关联,使得类别Cue限数设置在各播放器上分别起作用。
public class ExampleScript : MonoBehaviour {
/* 播放每个角色声音的播放器 */
public CriAtomSource[] atomSources;
/* 每个角色的声音对象 */
private CriAtomExSoundObject[] soundObjects;
void Start ()
{
int numSources = atomSources.Length;
soundObjects = new CriAtomExSoundObject[numSources];
for (int i = 0; i < numSources; i++) {
/* 创建一个启用了类别Cue限数范围的声音对象 */
soundObjects[i] = new CriAtomExSoundObject(false, true);
/* 将播放器设置给声音对象 */
soundObjects[i].AddPlayer(atomSources[i].player);
}
}
void OnDestroy() {
for (int i = 0; i < soundObjects.Length; i++) {
soundObjects[i].DeleteAllPlayers();
soundObjects[i].Dispose();
}
}
}