我用这个:
err = channel->setVolume(someVolumeBetween0and1);
即使错误是FMOD_OK,音量也不会改变。难道我做错了什么?有没有办法改变声音(频道)的音量?是否有其他的音量范围而不是[0,1]?
谢谢!
编辑:我在此之后使用setVolume:
err = soundSystem->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
答案 0 :(得分:6)
我在FMOD手册中找到了有关音量的内容: “当播放声音时,它将使用声音的默认频率,音量,声相,音量和优先级...... 要在声音可听之前更改通道属性,请通过将暂停标志设置为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);
答案 1 :(得分:2)
更改setVolume和playSound的顺序,它适用于我的项目
答案 2 :(得分:1)
我不是百分百确定,但在设置音量解锁之前可能需要停止/暂停声音,并在音量设定后继续播放声音。
要检查的其他事项可能是声音正在正确的通道上播放(或者您正在正确的通道上设置音量)。声音是否锁定?声音可能是覆盖音量的通道组的一部分(虽然FMOD文档说通道组应该缩放,而不是覆盖)?
答案 3 :(得分:0)
我在使用FMOD时遇到了这个问题,并且走了很多这样的道路。我试着暂停声音。我想知道是不是因为我的声音被打圈了。
最后,它完全是一个应用程序问题。我没有使用正确的渠道对象。
无需暂停以改变音量。播放声音的点最初暂停,然后将音量设置为非默认值,然后取消暂停声音,是为了避免在默认音量下短暂播放该声音。
答案 4 :(得分:0)
试试这个
result = channle->setPaused(false);//after you set volume