CRI ADX  Last Updated: 2024-07-17 10:48 p
Voice池标识符

示例目录

/cri/pc/samples/criatomex/voice_pool_identifier


示例描述

在有多个Voice池的情况下,Player执行播放时,Player从哪个Voice池获取Voice 取决于播放时的情况。
因此,未设置优先级播放多个声音时, 播放BGM的Voice可能会因为意外播放SE而被抢占…。
对于不管有沒有BGM和台词等其他声音存在,始终需要播放的声音, 必须为它们分配专用的Voice池。
Atom运行库提供“Voice池标识符”来实现这一功能。
Voice池标识符是用于确定Voice池的唯一数值。
如果在创建Voice池时指定Voice池标识符,将只有识别标识符的Player才能引用该Voice池。
使用Voice池标识符关联Voice池和Player的方法如下。
/* 创建Voice池1 */
/* 为Voice池设置唯一标识符“0x1234”。 */
pool_config.identifier = 0x1234;
pool_config.num_voices = 4;
app_obj->voice_pool1 = criAtomExVoicePool_AllocateAdxVoicePool(&pool_config, NULL, 0);
/* 创建Voice池2 */
/* 为Voice池设置唯一标识符“0x5678”。 */
pool_config.identifier = 0x5678;
pool_config.num_voices = 4;
app_obj->voice_pool2 = criAtomExVoicePool_AllocateAdxVoicePool(&pool_config, NULL, 0);
/* 创建Player1 */
app_obj->player1 = criAtomExPlayer_Create(NULL, NULL, 0);
/* 将Player1引用的Voice池限定为标识符“0x1234”的Voice池 */
criAtomExPlayer_SetVoicePoolIdentifier(app_obj->player1, 0x1234);
/* 创建Player2 */
app_obj->player2 = criAtomExPlayer_Create(NULL, NULL, 0);
/* 将Player2引用的Voice池限定为标识符“0x5678”的Voice池 */
criAtomExPlayer_SetVoicePoolIdentifier(app_obj->player2, 0x5678);
void criAtomExPlayer_SetVoicePoolIdentifier(CriAtomExPlayerHn player, CriAtomExVoicePoolIdentifier identifier)
Specify the Voice Pool identifier
CriAtomExPlayerHn criAtomExPlayer_Create(const CriAtomExPlayerConfig *config, void *work, CriSint32 work_size)
Create an AtomEx player
#define criAtomExVoicePool_SetDefaultConfigForAdxVoicePool(p_config)
Assign the default values to the configuration structure used to create an ADX Voice Pool
Definition: cri_le_atom_ex.h:582
CriAtomExVoicePoolHn criAtomExVoicePool_AllocateAdxVoicePool(const CriAtomExAdxVoicePoolConfig *config, void *work, CriSint32 work_size)
Create an ADX Voice Pool
 
在上面的示例中,为Voice池1设置标识符“0x1234”,为Voice池2设置标识符“0x5678”。
对Player1指示使用::criAtomExPlayer_SetVoicePoolIdentifier函数,仅从具有标识符“0x1234”的Voice池 获取Voice,因此对Player1的播放处理全部使用Voice池1的Voice 进行。
(这样无论Player1执行多少播放处理,也不会从Voice池2抢占Voice。)
同样,对Player2指示仅从具有标识符“0x5678”的Voice池获取Voice, 因此对Player2的播放处理全部使用Voice池2的Voice。


示例使用的数据中AtomCraft项目的目录

/cri/tools/criatomex/examples/tutorial_data_for_runtime