音の音量調整が少し分かりにくかったので、ここにメモします。
オーディオのグループ等については、ココにメモしています。
音量の調整
単純にオーディオのボリュームを調整する場合は、AudioSourceを使用します。音の発生元を何とかすれば良い法則です。AudioSource.Volumeを操作すればオーディオのボリュームが指定出来ます。最小値が0,最大値が1です。
またSpatial Blendの設定が3D寄りの場合、距離に応じて音量が減少します。つまりAudioListener(耳)から遠い所で鳴った音は小さく、近くで鳴った音は大きく聞こえます。減衰率等は3D Sound Settingsで調整します。
グループの音量をSnapshotを利用せず個別調整する
Unity5から追加されたオーディオのGroupを使用した場合、前回紹介したとおりGroup毎に音量を調整する事ができます。
Unity5のオーディオ機能について(1) - テラシュールブログ
しかしSnapshotの一覧になりパターンの調整、例えばBGM/SE/Masterのような音量調整を行いたい場合はSnapshotは正直面倒です。なので、スライダーで個別に設定出来るようにしてみます。
グループのオーディオを設定するには、UnityEngine.Audio.AudioMixerのSetFloat(パラメータ名, 音量)を使用します。このパラメータ名が曲者で、AudioMixerで設定する必要があります。
- AudioMixerのGroupを選択
- InspectorビューでAttenuationのVolumeを右クリックしExport Volume to scriptを選択
- Exposed Parametersで好きな名前に変更
後はスクリプトでオーディオの音量を指定するわけですが、これdB(デシベル)表記なので0〜1ではなく-80〜0で指定します。上のgifのようにMsterVolumeの名前で設定している場合は、以下のようにパラメータを調整します。
上のコードの場合、uGUIのスライダーで指定すれば音量が調整できます。
AudioMixerGroup.Volumeや"Master.Volume"とかで調整させてくれれば楽なんですが…なんでこんな面倒な仕組みなんでしょうね。
その他
もう一つ、会話シーン等で「会話中はBGMを下げる」もあるのですが、これはエフェクト機能が強く絡んでくるのでエフェクト紹介時にでも。