我想知道如果我做錯了什麼。我已經建立了我的SoundManager類,以擁有5個不同的頻道,在我的遊戲中,可能會同時播放一些聲音,例如槍響和敵人「傷害」聲音......這就是我設置FMOD和功能我打電話的方式來播放聲音,他們總是倒回到開始:FMOD - 無法播放同步聲音
void SoundMgr::init(){
System_Create(&fmodsys);
fmodsys->init(5, FMOD_INIT_NORMAL, 0)
}
void SoundMgr::play(string name, int chan){
if(chan == 1){
fmodsys->playSound(FMOD_CHANNEL_FREE, soundMap.find(name)->second, true, &chn1);
chn1->setMode(FMOD_LOOP_OFF);
chn1->setPosition(0, FMOD_TIMEUNIT_PCM);
chn1->setPaused(false);
} else if(chan == 2){
fmodsys->playSound(FMOD_CHANNEL_FREE, soundMap.find(name)->second, true, &chn2);
chn2->setMode(FMOD_LOOP_OFF);
chn2->setPosition(0, FMOD_TIMEUNIT_PCM);
chn2->setPaused(false);
} else if(chan == 3){
fmodsys->playSound(FMOD_CHANNEL_FREE, soundMap.find(name)->second, true, &chn3);
chn3->setMode(FMOD_LOOP_OFF);
chn3->setPosition(0, FMOD_TIMEUNIT_PCM);
chn3->setPaused(false);
} else if(chan == 4){
fmodsys->playSound(FMOD_CHANNEL_FREE, soundMap.find(name)->second, true, &chn4);
chn4->setMode(FMOD_LOOP_OFF);
chn4->setPosition(0, FMOD_TIMEUNIT_PCM);
chn4->setPaused(false);
} else if(chan == 5){
fmodsys->playSound(FMOD_CHANNEL_FREE, soundMap.find(name)->second, true, &chn5);
chn5->setMode(FMOD_LOOP_OFF);
chn5->setPosition(0, FMOD_TIMEUNIT_PCM);
chn5->setPaused(false);
}
}
而且在比賽中我有(這只是一個例子,但它與大多數的聲音發生):
....
sMgr->play("gunshot", 1);
....
sMgr->play("rat_hurt", 3);
...
然而,結果是非常隨機的,兩個聲音很少同時播放,而大多數時間只有兩個播放中的一個...
另外我有一個循環模式:
void SoundMgr::playRepeat(string name, int chan){
if(chan == 1){
fmodsys->playSound(FMOD_CHANNEL_FREE, soundMap.find(name)->second, true, &chn1);
chn1->setMode(FMOD_LOOP_NORMAL);
chn1->setPosition(0, FMOD_TIMEUNIT_PCM);
chn1->setPaused(false);
} else if(chan == 2)
....
,但同樣是隨機的其他非循環的聲音打斷了,即使打在不同的渠道?
我真的很感激任何幫助,您可以提供
預先感謝您爲您可以提供任何幫助。
謝謝,這是一個解決方案,我很樂意考慮一旦我找出爲什麼渠道不能正常工作,雖然.. – Alex