Unityでサウンドにエフェクトを追加したりダッキングしたりカテゴリ管理したりできるAudio Mixerの使い方をまとめました。
- 概要
- 基本操作 - エフェクトをかけてみる
- グループ機能で「カテゴリ」を作る
- グループの可視状態の変更とViews機能
- スナップショット機能
- ダッキング(サイドチェイン)機能
- ミキサーに親子関係を持たせる
- エフェクト一覧
- スクリプトから各パラメータを操作する
- 関連
- 参考
概要
Unity の Audio Mixer を使うと以下のようなことが実現できます。
本記事ではこの Audio Mixer について、基本的な使い方をまとめます。
基本操作 - エフェクトをかけてみる
まず簡単なエフェクトを掛けて Audio Mixer の基本操作を学びます。
最初に Assets > Create > Audio Mixer から Audio Mixer アセットを作成し、作成したアセットをダブルクリックして下図のウィンドウを開きます。
上図を見ると Master という名前の Audio Mixer Group があることが確認できます。
この下部にある Add… ボタンを押下し、SFX Reverb からリバーブエフェクトを追加します。
エフェクトが追加されたら、Master グループを選択した状態で Inspector から Room プロパティを 0.00mB に設定します。
これでAudio Mixerの設定は終わりです。
あとは適用したい Audio Source の Output プロパティにこの Audio Mixer Group をアサインします。
再生するとリバーブエフェクトが掛かることが確認できます。
グループ機能で「カテゴリ」を作る
前節の通り、Audio Mixer を作成すると Master という名前の Audio Group が一つだけ存在しています。
このグループは複数作成することが可能で、それぞれのグループごとに音量やエフェクトを調整することができます。
これを活用すると例えば、ボイスとSE、BGMといったサウンドのカテゴリごとにグループを分けて、カテゴリごとに音量調整できる機能を作成することができます。
またグループは入れ子にすることが可能です。
これを使えば例えば、Voice グループの子として Player Voice グループと Enemy Voice グループを作成し、特定状況下では Enemy 敵のボイスのボリュームだけを下げるといったことができます。
詳細な設定方法については以下の記事にまとめていますので、必要に応じて参照してください。
グループの可視状態の変更とViews機能
Audio Group が多くなってくるとGUIが見づらくなり、作業が煩雑になります。
このような場合には、各 Audio Group の左側にある目のマークを押下することでそのグループを非表示にすることができます。
また、現在のグループの可視状態の設定は View として保存しておくことができます。
Views の右側の + ボタンを押下することで新しい View を追加し、今行っている作業に応じてグループの可視状態設定を切り替えることができます。
スナップショット機能
Audio Mixer では、グループの音量(Attenuation)や各種エフェクトのパラメータなど、現在の設定値をスナップショットとして保存できます。
保存したスナップショットは再生中に切り替えたり、ブレンドしたりすることができます。
詳しい使い方については以下の記事にまとめていますので、必要に応じて参照してください。
ダッキング(サイドチェイン)機能
ダッキングとは、ある音が鳴ったときに他の音の音量を下げて聞こえやすくする処理です。
例えばキャラクターのボイスが再生されたときに自動的にBGMを下げて、ボイスを聞こえやすくするときなどに使います。
Audio Mixer では、グループ間でダッキングの設定を行うことで、このような効果を得ることができます。
ダッキングの詳細な設定方法について詳細は以下の記事にまとめていますので、必要に応じて参照してください。
ミキサーに親子関係を持たせる
Audio Mixer はプロジェクト内に複数作成することができます。
新しい Audio Mixer を作成するには、Mixers の右側の + ボタンを押下します。
Audio Mixer をドラッグし、親の Audio Group を選択することで、子の Audio Mixer の出力を親の Audio Group にルーティングすることができます。
上記の例では、 Example2 を使用したサウンドは Example の BGM グループや Master グループの影響も受けるということになります。
なおスクリプトからは_audioMixer.outputAudioMixerGroup
に値を設定することでルーティングの設定をすることができます。
エフェクト一覧
Audio Mixer で使用できるエフェクトの一覧と概要は以下の通りです。
マニュアルに詳細な説明が書いていないので、参考になりそうなサイトをリンクしています。
スクリプトから各パラメータを操作する
Audio Mixer では GUI ツールを使って各種パラメータを編集することができます。
これに対して、音量を動的に変更したい場合など、スクリプトからパラメータを制御する必要があるケースがあります。
このようなケースでは、Exposed Parameter という機能を使って対象のパラメータをスクリプトから操作する対象としてマーク(Expose)することで、スクリプトからの制御が可能になります。
Expose したパラメータは以下のようなコードで操作することができます。
using UnityEngine; using UnityEngine.Audio; public sealed class Example : MonoBehaviour { [SerializeField] private AudioMixer _audioMixer; [SerializeField] private float _volume; private float _currentVolume = -1.0f; private void Update() { if (Mathf.Approximately(_currentVolume, _volume)) return; // AudioMixer.SetFloat で Exposed Parameter を設定する _audioMixer.SetFloat("BGMVolume", _volume); _currentVolume = _volume; } }
Exposed Parameter の詳細な使い方については以下の記事にまとめていますので必要に応じて参照してください。