i-school - AudioMixer の実装例

AudioMixer と AudioSource の連携設定


 この手順を進めるためには、事前に AudioMixer の設定を行っておく必要があります。
まだ行っていない場合には、こちらの記事から設定を行ってください。



 オーディオを上手く活用するためには、AudioMixer の設定と、
オーディオを再生するためのコンポーネントである AudioSource との同期が不可欠です。

 AudioMixer の準備が整っていますので、この手順では、AudioSource コンポーネントと AudioMixer とを連携し、
BGM や SE を再生させるとともに、AudioMixer を活用した実装を行います。



 今回は SoundManager クラスのようなオーディオの管理を行うクラスがない前提で記事を作成していますが、
こちらは適宜、自分の製作しているプロジェクトに合わせて記事を読み変えて設定してください。


BGM 再生用のゲームオブジェクトの作成


 ヒエラルキーに新しいゲームオブジェクトを作成し、BGM 再生用のゲームオブジェクトとします。
 
 ヒエラルキーの空いている場所で右クリックをしてメニューを開き、Create Empty を選択して、新しいゲームオブジェクトを1つ作成します。
名前を MusicEmitter や Music といった分かりやすい名称に変更します。



 MusicEmitter ゲームオブジェクトを選択し、インスペクターの一番下にある Add Component ボタンを押して
AudioSource コンポーネントをアタッチします。

 次に、AudioSource コンポーネントの設定を行います。

 AudioClip プロパティに、任意のオーディオをドラッグアンドドロップしてアサインします。

 Output プロパティの右側のラジオボタン(○ボタン)を押して、AudioMixer を設定します。
MasterMixer ファイルの Music グループを選択してください。

 Loop と Play On Awake の設定はどちらもオンのままで問題ありません。
ゲームの実行に合わせて BGM は鳴るはずであり、また、曲が終了したら曲の最初からループして欲しいためです。


インスペクター画像


 
 以上で設定は完成です。


SE 再用のゲームオブジェクトの作成


 SE を再生させたいゲームオブジェクトに AudioSource コンポーネントを追加します。
こちらは、すでにヒエラルキーにあるゲームオブジェクトに対して、Add Component ボタンで追加してください。
任意のゲームオブジェクトで問題ありません。



 AudioSource コンポーネントを追加後、AudioClip プロパティに再生したい SE 用のオーディオを設定します。
 
 Output プロパティには AudioMixer の設定を行います。SE として適している SoundEffects ファイル内のグループを1つ選択してください。
MasterMixer ファイル内の SoundEffects グループ指定するのは間違いですので、気を付けてください。

 Loop と Play On Awake のチェックはどちらも外してください。

 画像は参考例です。この例では、プレイヤーに関連する SE を鳴らしたいので、Output には
SoundEffects ファイルの Player グループを設定しています。


インスペクター画像



 以上で設定は完了です。


デバッグ用の SE 再生用のスクリプトを作成する


 デバッグ用に SE を再生する機能を持つスクリプトを作成します。
他にも転用可能ですが、どのように利用するかは考えてみてください。


PlayAudio.cs


 InputManager に設定されている Fire2 のキー入力を受け付けて
AudioSource コンポーネントから AudioClip に設定しているオーディオを再生させるようにしています。

 キー入力で利用している Fire2 の初期設定は、マウスの右クリックか、left Alt キーです。

 エディターメニューの Edit → Project Settings から ProjectSettings ウインドウが開きます。
左の項目から InputManager を選択して、キー入力の設定を確認しておいてください。


InputManager



 スクリプトを作成したらセーブします。


PlayAudio スクリプトを SE を再生させたいゲームオブジェクトにアタッチする


 デバッグ用の PlayAudio スクリプトを、SE を再生させたいゲームオブジェクトにドラッグアンドドロップしてアタッチします。
アタッチしたら、ゲームオブジェクトを選択し、正常にアタッチされているかを確認するためインスペクターを表示します。

 スクリプトがアタッチされていることが確認できたら、インスペクターから MyAudio 変数を設定します。
このゲームオブジェクトにアタッチされている AudioSource コンポーネントの情報をアサインしてください。


インスペクター画像



 以上で設定は完成です。


ゲームを実行して、AudioMixer の調整を行う


 オーディオを再生する準備ができましたので、ゲームを実行して、オーディオが再生されるか確認します。

 ゲームを実行すると、AudioMixer ウインドウとインスペクターの上部に Edit in Playmode のボタンが追加表示されます。
このボタンを押すことで、ゲーム実行中での AudioMixer の値の調整が可能になります。Volume についても同様です。









 ゲームを実行しながら、AudioMixer ウインドウの MasterMixer ファイル内 Music グループを選択します。

 オーディオの音量については、スライダーを操作して、大きすぎないように調整してください。
初期値は 0 で、下げることで音量を絞ることが出来ます。こちらは SE との関連もありますので、あとでもう一度調整が必要になります。

 つづいて、インスペクターを確認します。

 Duck Volume の設定を行うことができます。この設定を行うことで、SoundEffects グループから SE 用のオーディオ出力が行われた際に
Music のボリュームを自動的に絞る機能を実現できます。
デバッグ用のスクリプトを利用し、SE を鳴らしながら、Music のボリュームが絞られて、SE が聞き取りやすくなるように調整します。


Music グループ インスペクター画像(参考値。このままではうまくいきませんので、調整してください)



 Duck Volume の設定は初期値のままでも機能しますが、Threshold(スレッショルド)と Ratio(レイショウ/レシオ)の設定を行うことで
SE が再生された際に絞れる Music のボリューム量と範囲が変わります。

 実際にゲーム内で SE を鳴らしながら、どの位 Music のボリュームを一時的に絞れれば最適な状態になるかを、試して調整してください。

 これらの値がどういった機能をもっているのかは、自分で調べてみてください。

 なお、他の設定にも共通することですが、これなら絶対大丈夫、という値は基本的にありません
 今回であれば、Music に設定するオーディオや、SE に設定するオーディオが千差万別であるためです。
製作者側の意図が反映される部分ですので、必ず、実際にオーディオを聞きながら調整をする必要があります。



 以上でオーディオ関連の設定は完成です。

 うまく機能したら、他にも SE を追加したり、適宜なタイミングで鳴らすようにしていってください。