2

我用这个:

err = channel->setVolume(someVolumeBetween0and1);

即使 err 为 FMOD_OK,音量也不会改变。难道我做错了什么?有没有办法改变声音(通道)的音量?音量是否有其他范围而不是 [0, 1]?

谢谢!

编辑:我在此之后使用 setVolume:

err = soundSystem->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
4

5 回答 5

6

我在 FMOD 手册中找到了一些关于音量的内容:“播放声音时,它将使用声音的默认频率、音量、声像、电平和优先级……要在声音被听到之前更改通道属性,请启动暂停的通道将 paused 标志设置为 true,并调用相关的基于频道的函数。然后,使用 Channel::setPaused 取消暂停频道。 "

所以,正确的代码应该是这样的:

err = soundSystem->playSound(FMOD_CHANNEL_FREE, sound, true, &channel);
err = channel->setVolume(someVolumeBetween0and1);
err = channel->setPaused(false);

或者,你也可以试试这个:

err = soundSystem->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
err = channel->setVolume(someVolumeBetween0and1);
于 2012-12-12T10:46:21.383 回答
2

更改 setVolume 和 playSound 的顺序,它适用于我的项目

于 2012-03-21T12:53:59.433 回答
1

我不确定 100%,但在设置音量之前可能需要停止/暂停声音以解锁它并在设置音量后恢复播放声音。

其他要检查的事情可能是声音正在正确的频道上播放(或者您正在正确的频道上设置音量)。声音是否被锁定?声音是否是可能覆盖音量的通道组的一部分(尽管 FMOD 文档说通道组应该缩放,而不是覆盖)?

于 2011-08-25T16:45:00.170 回答
0

我在使用 FMOD 时遇到了这个问题,并且走了很多同样的路。我试着暂停声音。我想知道是不是因为我的声音被循环播放了。

最后,这完全是一个应用程序问题。我没有使用正确的通道对象。

无需暂停即可更改音量。播放声音最初暂停,然后将音量设置为非默认值,然后取消暂停声音,是为了避免以默认音量短暂播放该声音。

于 2013-03-15T13:04:05.387 回答
0

试试这个

result = channle->setPaused(false);//after you set volume
于 2015-05-08T14:22:17.937 回答