2

私はこれを使用します:

err = channel->setVolume(someVolumeBetween0and1);

エラーがFMOD_OKであっても、音量は変化しません。私は何か間違ったことをしていますか?音(チャンネル)の音量を変える方法はありますか?[0、1]の代わりにボリュームの他の範囲はありますか?

ありがとう!

編集:私はこの直後にsetVolumeを使用します:

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

5 に答える 5

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);
于 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 に答える