シーンを移動しても、同じサウンドを鳴らし続けられる仕組みを作りましょう。
シーンをロードしたタイミングで、BGMが消されないように、スクリプトで制御します。
シーンの準備
シーン名をScene1に変更します。
こういうダイアログが出てくれば、再ロードをクリックします。

もう一つシーンを作成し、名前をScene2にします。

プレーヤーのCubeが、Sphereにぶつかれば、シーンが切り替わるようにします。
Scene1の中に、CubeとSphereを作成し、少し距離をとります。

Cubeにリジッドボディを追加し、UseGravityのチェックを外します。

シーン2に遷移するためのスクリプトを書きます。
CubeMove.csを作成し、Cubeに追加します。

CubeMove.csを記述します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class CubeMove : MonoBehaviour { private float speed = 3.0f; void Start() { DontDestroyOnLoad(gameObject); } void Update() { float moveX = Input.GetAxis("Horizontal") * Time.deltaTime * speed; float moveZ = Input.GetAxis("Vertical") * Time.deltaTime * speed; transform.position = new Vector3 ( transform.position.x + moveX, 0, transform.position.z + moveZ ); } void OnCollisionEnter(Collision other) { if(other.gameObject.name == "Sphere") { SceneManager.LoadScene("Scene2"); } } } |
4行目、using UnityEngine.SceneManagement; を忘れずに書いておきましょう。
シーンの追加
ビルド設定から、シーンを追加します。

Scene1を追加します。

ビルド設定の画面は閉じておきます。
この状態で、いったんScene1を保存しておきます。

続いて、Scene2をダブルクリックして開きます。
Scene2のライティング設定を行います。
ウィンドウ > レンダリング > ラインティング設定

ライティングの生成をクリックしましょう。

こちらも同様に、ビルド設定から、シーンを追加します。

ビルド設定の画面は閉じておきます。
ここで一旦、Scene2を保存します。

シーンが変わってもサウンドの続きが鳴る
Scene1を開き、空のオブジェクトを作成します。
GameObject(空のオブジェクト)にオーディオソースを追加し、音楽データを入れます。
ゲーム開始時に再生と、ループにチェックを入れます。

SoundManager.csを作成し、GameObjectに追加します。

SoundManager.csを記述します。
|
1 2 3 4 5 6 7 8 9 10 11 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SoundManager : MonoBehaviour { void Start() { DontDestroyOnLoad(gameObject); } } |
ゲームプレイしましょう。
Cubeを操作して、Sphereに触れるとScene2へ遷移します。
Scene2へ移っても、BGMの続きが鳴っていればOKです。