我正在用32个通道初始化FMOD并使用以下代码播放短样本(1秒):
result = system->init(32, FMOD_INIT_NORMAL , NULL);
// here I load the sounds //
result = system->playSound(FMOD_CHANNEL_FREE, grid[_sound], false, &channel);
它按预期工作,重叠声音,但现在我意识到当我播放32个样本(不是同时)时,一次只能播放一个声音。看起来FMOD_CHANNEL_FREE的行为类似于增量计数器,当它达到32时,它会停留在那里,当它仍然在播放时播放新声音时停止最后一个声音。
我们是否必须在停止播放时删除声音?怎么样?我觉得我错过了一些基本的东西
谢谢!
马克
答案 0 :(得分:3)
我遇到了同样的问题。事实证明我忘了每帧都打system->update()
。一旦我把它放进去,它工作正常。
答案 1 :(得分:0)
听起来这些频道还在播放(但是没声音),你能查看频道:: isPlaying并看看它们是否还在继续吗?
如果没有帮助,可能会发布更多代码。
答案 2 :(得分:0)
你可以验证你用多个最大通道初始化fmod系统吗? 尝试使用以下代码来初始化你的fmod系统:
System->init(32, FMOD_INIT_NORMAL, 0);
或者你忘了打电话了
System->Update();