Unity事例ノート

UNITY

オブジェクトに触れたとき別シーンへ移動

オブジェクトに触れたとき、別シーンへ移動するしくみをつくってみましょう。

シーン移動後も、プレーヤーは消されず、そのまま残るようにします。

関連記事:
移動先のシーンで座標を指定する
別シーンへ遷移するボタンを設置する
ぶつかると最初からスタート
シーンを遷移しても同じ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を記述します。

▼YouTubeにて、このスクリプトを解説しています。

シーンをロードする際には、using UnityEngine.SceneManagement; を書いておく必要があります。

DontDestroyOnLoad(gameObject); を入れると、シーン移動後も、そのオブジェクトが残るようになります。

プレイして、Sphereを動かしてみましょう。

Cubeに触れると、シーン2に遷移しました。

次のシーンに移動した後も、Spehreは消えずに残っています。

Scene02のビューが暗くなった場合

もし、シーンに遷移したあとに、ビューが暗くなっている場合は、ライティングを生成しましょう。

Scene02を開きます。

ウィンドウ > レンダリング > ライティング

ライティングの生成をクリック。

しばらく時間がかかりますが、Scene02のライティングが生成され、明るく表示されるようになります。

関連記事:
移動先のシーンで座標を指定する
別シーンへ遷移するボタンを設置する
ぶつかると最初からスタート
シーンを遷移しても同じBGMが鳴り続ける
シーンを遷移してもカメラ追従を保持する
SerializedObject target has been destroyed.エラーの対処法