1

使用Cricket Audio Sound Engine ( ios & android) 我将如何设置机枪式音效。我需要能够每秒播放多个声音实例。音效需要相互叠加。

我的解决方案是创建一个新的CkSound实例并忘记它。我没有看到一种容易破坏声音的方法,而无需复杂的声音跟踪方法。当我在游戏过程中创建数千个 CkSounds 时,这会导致内存问题吗?我真的不想为垃圾收集跟踪单个声音。

// Example sound effect call
void SoundManager::playEffect(const char* name){
    // I make a sound , play it , and forget about it
    sound = CkSound::newBankSound(g_bank, name);
    sound->play();
}
4

1 回答 1

2

我不建议您创建实例并且不要销毁它们,因为这是内存泄漏,因此您的应用程序将随着时间的推移使用越来越多的内存。

你可以试试这样的……

初始化:

const int k_maxSounds = 5; // maximum number of sound instances to be playing at once
CkSound* g_sounds[k_maxSounds];
for (int i = 0; i < k_maxSounds; ++i)
{
   g_sounds[i] = CkSound::newBankSound(g_bank, name);
}

要播放另一个声音实例,请找到第一个可用实例并播放它:

for (int i = 0; i < k_maxSounds; ++i)
{
   if (!g_sounds[i]->isPlaying())
   {
      g_sounds[i]->play();
      break;
   }
}

-steve - Cricket Audio Creator 通过电子邮件回复

于 2013-10-26T19:22:37.240 回答