Master Audio (Unity)
Master Audio
公式ドキュメント
ゲーム内容が増えると clip の管理や mixer の設定がしんどいのでこれで緩和できるかどうかというところ
初期設定
- Master Audio Manager ウィンドウから
MasterAudio
オブジェクトを作成(このとき prefab のままだと更新時に設定が初期化されるので prefab でない方が正解 -
Group Mixer
に適当な clip を登録 - スクリプトから下記のように呼び出す
using DarkTonic.MasterAudio;
[SoundGroupAttribute] public string soundName;
void Start()
{
MasterAudio.PlaySound("clip_name");
MasterAudio.PlaySound3DAtTransform(sType: soundName, sourceTrans: this.transform);
}
対象の地点やオブジェクトの位置で鳴らす
ノーマルの PlaySound
の方で鳴らすと MasterAudio オブジェクトからなってしまうため3D空間で効果音鳴らす場合は基本下記。*Forget
の方は鳴らした clip の終了検知に使える
例
とりあえず sType
(クリップ名)と sourceTrans
(Transform)だけ指定すれば OK
MasterAudio.PlaySound3DAtTransform(sType: "clip_name", sourceTrans: this.transform);
MasterAudio.PlaySound3DAtVector3
渡した Vector3 のポジションで鳴らす
引数: (string sType, Vector3 sourcePosition, float volumePercentage, float? pitch, float delaySoundTime, string variationName);
MasterAudio.PlaySound3DAtTransform
渡した Transform の位置で鳴らす
引数: (string sType, Transform sourceTrans, float volumePercentage, float? pitch, float delaySoundTime, string variationName);
MasterAudio.PlaySound3DFollowTransform
渡すオブジェクトが定期的に動く場合はこれ
引数: (string sType, Transform sourceTrans, float volumePercentage, float? pitch, float delaySoundTime, string variationName);
Play list controller
BGM はこれで流すのが簡単
- Blend rule を
Force To 2D
にすれば空間関係なく均一に流れる -
Start Playlist on Awake
を設定すればシーン読み込み時に勝手に流れる - clip 自体の設定を loop にしておく
Audio origin
Audio origin の設定は基本 Clip
で良い。もしメモリに常に読み込みたくない場合はプリロードのチェックを外せばよい。
Master Audio GameObject
- すべての Audio は次の式で音量が決定される: (audio clip volume)X (group volume)X (bus volume - if any)X(master mixer volume)
- Occusion: デフォルトでオフ。効果音を壁とかで減衰させたい場合に。
- AUdio Ducking: ある効果音を鳴らすときにBGMや他の効果音を小さくして目立たせたいときに
Sound Group
- Caller Despawned Mode: オブジェクトデスポーン時の動作を決定できる。None はそのまま再生。 Stop はすぐ泊める。フェードは時間で止める。
- Unused Addressable Life (sec): Addressable な場合にメモリに記憶しておく秒数
Dynamic Soud Group Creater Prefab
シーンごとに効果音やBGMが決まっている場合は破棄されるこっちを使うのもよい
各種音量調整
mixier の設定を永続変更する場合
PersistentAudioSettings.MixerVolume = 0.5f;
バス毎は
PersistentAudioSettings.SetBusVolume("Dialogue", .8f);
Triggering Audio Without Writing Code!
Ambient Sound
BGM かつ距離を入れたい場合はこれ。鳴らしたいオブジェクトにアタッチ
Event Sounds
コーディング無しで collider enter 等で効果音。鳴らしたいオブジェクトにアタッチ
Master Audio への変換
AudioSource 検索してくれるだけでコードの修正が必要。 既存アセットの変換は結構大変なので、必要な場合だけ対応で。
同じ clip が同時に鳴らせない
Voices/Weight
を増やす(最大100)
ただ、大きい値にしすぎると重くなる(実行時に大量に子オブジェクトが生成される)