Unity でシーンを遷移しても BGM を継続させる方法 2 つ

Unity でシーンをまたいで BGM を再生させるにはいくつか方法があります。

  • DontDestoyOnLoad() 関数を使う
  • メインのシーンで再生を行い、シーンの遷移は LoadSceneMode.Additive を使う(Unity 5.3 以降)

DontDestoyOnLoad() 関数を使う

BGM 用のオブジェクトを作り、スクリプトで DontDestroyOnLoad を実行します。

これだけ。

メインのシーンで再生を行い、シーンの遷移は LoadSceneMode.Additive を使う(Unity 5.3 以降)

Unity 5.3 でマルチシーン編集機能が追加され、シーンとシーンを合成したりできるようになりました。これを利用して、BGM を再生する最小限のシーンを置き、そこに他のシーンを追加読み込み、破棄することでシーン遷移を実現します。

まず、シーンマネージャの名前空間を読み込み、

追加のシーン読み込みは下記のコードで実現します。

破棄は以下。

メリット・デメリット

メリット デメリット
DontDestoyOnLoad シーン数が少なければシーンの構造をシンプルに保てる デバッグなどで初めのシーンを外してしまうと鳴らない
マルチシーン編集  シーンが増えた際にいろいろ柔軟に対応しやすい …?

書きながら、よっぽどシーンの増えない予定のものじゃなければマルチシーン編集がいいのでは?と思われ始めた。何かもっとスマートな方法があればどなたか教えてくださいm(_ _)m

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です