やってみたら出来ちゃったシリーズ
Audio MixerのSnapshotを、殆どコードを書かずに実行時に切り替えます。
Audio MixerのSnapshot
古の時代、Unity 5と呼ばれる時代にてAudio Mixerという機能が追加されたそうじゃ。
滅多に解説されないAudioMixerには、ある珍しい機能があったそうな。
その名もSnapshot。
Group(Audio Sourceが音を出力する先)の設定を保持し、簡単に切り替えられるようにする素晴らしい設定じゃ。
ただ、使うにはFindSnapshot("Snapshot名")という非常に微妙なAPIを呼ばなくてはならぬため、余り使っている人を見ておらぬのじゃ。
普通にやる場合は、こんな感じのコードになるのじゃ。
Snapshotをコードを書かずに切り替える
とまぁ、そんなこんなで今まで普通に放置してきた機能ですが、ふとノーコーディングでSnapshotの切替が出来ないかと試し所、出来てしまったので書いておきます。
簡単に言えば、UnityEventでSnapshot切替のコードを呼び出します。
- Buttonを作成し、OnClickにMixerのアセットを直接セット、
- AudioMixerController.TargetSnapshotを設定し、スナップショット(図では屋内)を引数にセット
これで、ボタンを押したらSnapshotの設定が屋内に切り替わります。
まぁ「フェード」は出来ませんが…
ボタン以外にも使ってみる
ボタン以外、特定の状況で呼び出されるようにしてみます。
例えばステージの屋内に入ったら「屋内」のSnapshot、屋外に行ったら「屋外」のSnapshotになるように切り替える…とか。
やってる事は単純で、下のような汎用イベント呼出コードを用意します。
gist.github.com後は入り口と出口にTriggerとなるColliderを用意し、ボタンと同様に入り口と出口に対応するSnapshotを有効にするイベントを登録するだけです。
何の役に立つかだって?良い質問だ。君にはソレを考える権利をあげよう。