テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】Audio MixerのSnapshotを殆どコードを書かずに変更する

f:id:tsubaki_t1:20171020015524j:plain

やってみたら出来ちゃったシリーズ

Audio MixerのSnapshotを、殆どコードを書かずに実行時に切り替えます。

Audio MixerのSnapshot

古の時代、Unity 5と呼ばれる時代にてAudio Mixerという機能が追加されたそうじゃ。

滅多に解説されないAudioMixerには、ある珍しい機能があったそうな。

 

その名もSnapshot。

 

Group(Audio Sourceが音を出力する先)の設定を保持し、簡単に切り替えられるようにする素晴らしい設定じゃ。

ただ、使うにはFindSnapshot("Snapshot名")という非常に微妙なAPIを呼ばなくてはならぬため、余り使っている人を見ておらぬのじゃ。

tsubakit1.hateblo.jp

普通にやる場合は、こんな感じのコードになるのじゃ。

gist.github.com

Snapshotをコードを書かずに切り替える

とまぁ、そんなこんなで今まで普通に放置してきた機能ですが、ふとノーコーディングでSnapshotの切替が出来ないかと試し所、出来てしまったので書いておきます。

 

簡単に言えば、UnityEventでSnapshot切替のコードを呼び出します。

 

  1. Buttonを作成し、OnClickにMixerのアセットを直接セット、
  2. AudioMixerController.TargetSnapshotを設定し、スナップショット(図では屋内)を引数にセット

これで、ボタンを押したらSnapshotの設定が屋内に切り替わります。

f:id:tsubaki_t1:20171020020618j:plain

まぁ「フェード」は出来ませんが…

ボタン以外にも使ってみる

ボタン以外、特定の状況で呼び出されるようにしてみます。

例えばステージの屋内に入ったら「屋内」のSnapshot、屋外に行ったら「屋外」のSnapshotになるように切り替える…とか。

f:id:tsubaki_t1:20171020021042g:plain

やってる事は単純で、下のような汎用イベント呼出コードを用意します。

 

gist.github.com後は入り口と出口にTriggerとなるColliderを用意し、ボタンと同様に入り口と出口に対応するSnapshotを有効にするイベントを登録するだけです。

f:id:tsubaki_t1:20171020021530j:plain

 

何の役に立つかだって?良い質問だ。君にはソレを考える権利をあげよう。

関連

tsubakit1.hateblo.jp