【Unity】BGMとSEのボリュームを個別に設定するAudioMixer

2020年2月18日

ゲームの設定やメニューでよくBGMやSE、ボイスの各ボリュームを調整できる機能があると思います。下図は某プリコネの音量関係の設定画面です。UnityだとAudioMixerを使うことで簡単に設定することが出来ます。(まぁ某プリコネもUnityで作られているので中身似たような感じだと思います)

AudioMixerとAudioSourceを用意する

肝になるのはAudioMixerの設定と、実際に鳴らすAudioSourceの設定の2つになります。上記のような設定画面とスクリプトの制御は別途になりますが、プログラムでのコントロールは後述。まずは音量の設定が分かれる状況を作ります。

AudioMixerの準備と設定

プロジェクトのどこかに右クリック>Create>Audio Mixerを選択。

作られたら、Window>Audio Mixer(ショートカットだとCtrl+8)でAudio Mixerウインドを呼び出す。Audio Mixerウインドが表示された状態で改めて先程作ったAudio Mixerを選択状態にすると、こんな表示になるのを確認。これが未設定状態でのAudio Mixerになります。

ここから音量を制御するグループを追加します。グループを追加する方法の1つとして、親グループを選択した状態で、Groupsの右側の+ボタンを押すことで追加が可能です。このグループは、必ずMaster以下に作られます。親子関係が作られたものは必ず親の音量制御の影響を受ける形になるので、どのような構成にしたいかはゲームによって変わると思うので自分の好きな構成を作ってください。

構成例1

先程の某プリコネのような構成だと、各3種類の音がMaster以下に直接ぶら下がっている形になります。

構成例2

基本的にはBGMとSEで制御できるようにしますが、演出の関係などで2つのBGMをクロスフェードで演出したい場合などはこんな感じ。シチュエーションがシームレスに移行する場合はこっちの構成だと便利かも。FieldとBattleのグループを作る場合は、BGMを選択した状態でグループを追加してください。


AudioSourceに設定して実際に鳴らしてみる

実際に作ったグループを利用して鳴らしてみましょう。シーン内にGameObjectを作り、AudioSourceをAddComponentでくっつけます。Inspectorの設定は、audio clipに何かサウンドファイルをつけて、outputに先程作ったグループの制御したいグループを引っ掛けます。グループを追加したら、プロジェクトビューの中のAudioMixerの子供に追加したグループが表示されますので、そこから引っ張ってください。Masterとは孫関係であってもここではフラットに表示されます。

この状態でゲームを再生するとBGM(音声)が流れると思います。

では、ようやくグループごとに音量の設定が効くかどうかのチェックを行います。やり方としては先程関連付けをしたグループのボリュームスライダーを上げたり下げたり変更した状態でUnityを再生して確認してみてください。※この段階では再生中にスライダーの変更は出来ません。

ちょっと下げただけでかなり音量が変化しますので微調整しながら確認してみてください。


次の記事ではスクリプトを使っての制御処理を実装したいと思います。