2

我正在尝试使用 FMOD、Visual Studio 2012 和 C++ 向我的应用程序添加声音。我得到了最新版本(1.02)并安装了它。一切似乎都很好,但是(变量?)像 FMOD_CHANNEL_FREE 和 FMOD_CHANNEL_REUSE 是未定义的。和我交谈的每个人都有这个问题,但从未解决过,网上的每个人似乎都没有这个问题。我注意到的另一件事是 playSound 的参数已经切换。为了我:

 system->playSound(sound->second, FMOD_CHANNEL_FREE, false, 0);

其他地方

system->playSound( FMOD_CHANNEL_FREE, sound->second, false, 0);

我按照安装说明进行操作,包括 fmod.hpp 和 fmod_errors.h,卸载、重新安装,谷歌让我失望了。如果有帮助,channel_free 点中所需的参数是 FMOD::ChannelGroup

有任何想法吗?如果您需要更多代码,请发表评论(不回答),我会遵守的。

4

2 回答 2

4

随着从 FMOD Ex 到 FMOD Studio 的更改,一些 API 已被修改,这就是这样一种情况。FMOD Ex 版本的 System::playSound 的第一个参数已被删除,默认行为现在始终为 FMOD_CHANNEL_FREE。

新的第二个参数用于指定 FMOD::ChannelGroup 播放此通道。您不需要设置此参数,如果您希望 FMOD Ex 行为在主通道组中播放声音,请指定 NULL。

FMOD Studio 的正确用法是:

FMOD::System *system = NULL; // create and init not shown
FMOD::Sound *sound = NULL; // create not shown

FMOD::Channel *channel = NULL;
FMOD_RESULT result = system->playSound(sound, NULL, false, &channel);
于 2013-10-07T11:01:26.343 回答
0

他们没有切换,你看头文件了吗?第二个参数是一个指向通道组的指针,而您要向它传递一个整数?

无论如何,免费/重用标志已经消失,只需删除它们。内部渠道始终是“免费的”。

于 2013-10-04T05:28:18.953 回答