結論から言うとフタバゼミ様が出しているやり方を参考にすればいいです。
以下に示します。
以下メモ書き
シーンを移動しても同じ音楽を続けて鳴らしたい場合、
DontDestroyOnLoadを使う方法がある。
オーディオソースのオーディオクリップに流したいBGMを入れて、
ゲーム開始時に再生にチェックを入れると起動時にBGMが流れるようになる。
(長く流すならループにチェックしてループさせる)
これでBGMを流せるが、これだけだとシーン移動したときに
オーディオソースがなくなってしまう。
下の例はボタンクリックでシーン移動する場合。
そこでシーンが移動しても引き継ぐために、DontDestroyOnLoadを使う。
下記が使用したスクリプト
DDManager.cs
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class DDManager : MonoBehaviour
- {
- public GameObject Gamesystem;
- void Start()
- {
- DontDestroyOnLoad(Gamesystem);
- }
- }
引き継ぎたいオブジェクト(今回はオーディオソース)に上記のスクリプトを付け,
DDManager.csのGamesystemにオーディオソースを入れる。
これでオーディオソースが破壊されず、BGMを次のシーンに引き継ぐことができる。
しかしこのスクリプトだとシーンを戻ったりするときどんどん増えていく問題がある。
例を下に示す。
上記はタイトル→メインシーン→タイトルと移動した場合。
タイトルに戻った時に新たに生成されるオーディオソースが破壊されないため、
タイトルに戻った数だけオーディオソースが増えてしまう。これだととてもうるさい。
そこで2つ目以降はオブジェクトが破壊されるようなスクリプトが必要になり、
そのスクリプトが書かれているサイトのリンクを一番上に貼った。