オブジェクトに触れたとき、別シーンへ移動するしくみをつくってみましょう。
シーン移動後も、プレーヤーは消されず、そのまま残るようにします。
関連記事:
移動先のシーンで座標を指定する
別シーンへ遷移するボタンを設置する
ぶつかると最初からスタート
シーンを遷移しても同じBGMが鳴り続ける
シーンを遷移してもカメラ追従を保持する
SerializedObject target has been destroyed.エラーの対処法
オブジェクトの用意
デフォルトのシーン名を、Scene01に変更します。
こういうダイアログが出れば、再ロードをクリックします。
シーン名が変更されています。
続いて、オブジェクトを作成しましょう。
Plane、Cube、Sphereを作成し、このように配置しました。
Sphereにはリジッドボディを追加します。
Cubeのボックスコライダーには、トリガーにするにチェックを入れます。
ビルド設定から、シーンを追加します。
ファイル > ビルド設定
シーンを追加をクリックすると、Scene01が表示されます。
ビルド設定の画面を閉じます。
この状態で、いったん保存しましょう。
シーンを追加
もう一つ、シーンを新規作成します。
プロジェクトビューの、Sceneフィルダ内で右クリック > 作成 > シーン
シーン名は、Scene02にしました。
Scene02をダブルクリックで開きます。
もし、こういうダイアログが出れば、保存をクリックしましょう。
このシーンでは、Planeだけを作成します。
判別しやすいように、シーン1とは違う色をつけます。
シーンを追加しておきましょう。
ファイル > ビルド設定
シーンを追加をクリックすると、Scene02が表示されます。
ビルド設定の画面を閉じます。
この状態で、いったん保存しましょう。
シーン遷移のスクリプト
再び、Scene01を開きます。
もし、こういうダイアログが出れば、保存をクリックしましょう。
SphereMove.csを作成し、Sphereに追加します。
SphereMove.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 31 32 33 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; //シーン遷移させる場合に必要 public class SphereMove : 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, transform.position.y, transform.position.z + moveZ ); } void OnTriggerEnter(Collider other) { if(other.gameObject.name == "Cube") { SceneManager.LoadScene("Scene02"); } } } |
シーンをロードする際には、using UnityEngine.SceneManagement; を書いておく必要があります。
DontDestroyOnLoad(gameObject); を入れると、シーン移動後も、そのオブジェクトが残るようになります。
プレイして、Sphereを動かしてみましょう。
Cubeに触れると、シーン2に遷移しました。
次のシーンに移動した後も、Spehreは消えずに残っています。
Scene02のビューが暗くなった場合
もし、シーンに遷移したあとに、ビューが暗くなっている場合は、ライティングを生成しましょう。
Scene02を開きます。
ウィンドウ > レンダリング > ライティング
ライティングの生成をクリック。
しばらく時間がかかりますが、Scene02のライティングが生成され、明るく表示されるようになります。
関連記事:
移動先のシーンで座標を指定する
別シーンへ遷移するボタンを設置する
ぶつかると最初からスタート
シーンを遷移しても同じBGMが鳴り続ける
シーンを遷移してもカメラ追従を保持する
SerializedObject target has been destroyed.エラーの対処法