【Unity入門】スクリプトからシーンを読み込んでみる

2021年11月27日

スクリプトからシーンを読み込むことができます。

シーンを読み込むには

UnityEngine.SceneManagement.SceneManager.LoadScene(シーンの番号);

と記述します。

using UnityEngine.SceneManagement;

を追加して、名前空間を省略した場合は、

SceneManager.LoadScene(シーンの番号);

と記述します。

実際にやってみる

準備

それでは、実際にスクリプトでシーンを読み込んでみましょう。

まずは、以前作成した、『Unity Basics』というプロジェクトを開いてください。

『Unity Basics』を開いたら、最初のシーンと、読み込まれるシーンの二つのシーンを作っていきましょう。

Scenesフォルダの中に作成します。

ProjectウィンドウでScenesフォルダを選択しましょう。

選択した状態で『+』ボタンを押しましょう。

色々と出てくるので、『Scene』をクリックしましょう。

すると、Scenesフォルダの中に新しくSceneが作成されます。

Sceneの名前を『Scene1』に変更しておきましょう。

同じようにして読み込まれるシーンである『Scene2』も作っていきます。

『+』ボタン、

Sceneと押していき、

名前を『Scene2』に変更しておきましょう。

まずは『Scene1』の中でやっていきたいので、Sceneを移動します。

『Scene1』をダブルクリックしましょう。

すると、Sceceを移動することができます。

Hierarchyウィンドウを見ると、現在のSceneが『Scene1』に変わっていますね。

次に、シーンを読み込むためのスクリプトを作成しましょう。

ProjectウィンドウでScriptsフォルダを選択してください。

選択した状態で『+』ボタンを押しましょう。

色々と出てくるので、『C# Script』を押します。

すると、新しくスクリプトが作成されます。

名前が確定する前に『ChangeScene』と変更しましょう。

スクリプトを作成したら、適当なtオブジェクトに追加します。

今回は、ChangeSceneをMain Cameraにドラッグ&ドロップしましょう。

すると、Main CameraにChangeSceneが追加されます。

シーンを読み込んでみる

それでは、指定したシーンを読み込んでいきましょう。

そのために、まずはScenes in BuildにScene1とScene2を追加しておきます。

Scenes in Buildというのはゲームをビルドした時に読み込まれるシーンを決めるためのものです。

Scenes in Buildにシーンを追加することで、そのシーンは読み込まれます。

ここに追加されているシーンでなければ、スクリプトからシーンを読み込むことができないので、追加しておきます。

File > Build Settings…と押していってください。

すると、Build Settingsの画面が表示されます。

そこの中にScenes in Buildという部分があります。

ここにScene1とScene2を追加していきます。

Scene1とScene2をScenes in Buildにドラッグ&ドロップしてください。

すると、Scenes in BuildにScene1とScene2が追加されます。

それでは、スクリプトからScene2を読み込んでみましょう。

先ほど作った、ChangeSceneというスクリプトをダブルクリックしてください。

すると、ChangeSceneが編集できるようになります。

今回は、ゲームスタート時にScene2が読み込まれるようにしてみましょう。

Start関数の中に

UnityEngine.SceneManagement.SceneManager.LoadScene(1);

と記述しましょう。

コードについて説明しておきます。

このコードはLoadSceneという関数を使って、シーンを読み込むといった内容です。

LoadSceneの引数には読み込みたいシーンの番号を入れます。

シーンの番号はScene in Buildで確認することができます。

今回はScene2を読み込みたいのでScene2の番号である1を格納しました。

LoadScene関数はUnityEngineという名前空間のさらに中にあるSceneManagementという名前空間に記述された

SceneManagerというクラスの中にある関数です。

なので、このような書き方をしています。

名前空間は、usingを使って省略することができます。

省略する場合は、上の方に

using UnityEngine.SceneManagement;

と記述しましょう。

このように記述すれば、UnityEngine.SceneManagementは

消してしまっても問題ありません。

この状態で再生すると、スタート時にScene2が読み込まれるはずです。

実際にそうなるのか、再生して確かめてみましょう。

スクリプトを保存してUnityエディタに戻りましょう。

Unityエディタに戻ったら、再生ボタンを押します。

すると、予想通りスタート時にScene2が読み込まれますね。