我开始使用 FMOD 库,因为我需要在 C# 应用程序中播放没有间隙的声音(循环中的一个声音和序列中的多个声音)。谁能告诉我正确的方法吗?我尝试根据示例制作一些东西,但它并没有像我希望的那样工作。首先,当我尝试设置声音是否循环播放时,
if (value)
sound1.setMode(FMOD.MODE.LOOP_NORMAL);
else
sound1.setMode(FMOD.MODE.LOOP_OFF);
什么都没有发生。只有在我开始播放之前设置模式时,它才能正常工作。
第二个问题是:如何通知我声音已经结束?我试着这样做:
channel.setCallback(eofCallback);
其中 eofCallback 是对 SoundEndCallback 的引用
private FMOD.RESULT SoundEndCallback(IntPtr channelraw, FMOD.CHANNEL_CALLBACKTYPE type, IntPtr commanddata1, IntPtr commanddata2)
{
FMOD.RESULT result;
if (type == FMOD.CHANNEL_CALLBACKTYPE.END)
{
//logic here
}
return FMOD.RESULT.OK;
}
但是只有当我在通道上手动调用 stop() 时才会达到此回调,而不是在轨道结束时。
或者最终你知道任何其他图书馆可以很容易地给我我需要的东西吗?我选择了 FMOD,因为它非常流行,但我不喜欢它的老式 C++ 式编码方式(无事件、无异常等)。