【Unity入門】スクリプトからシーンを読み込んでみる
スクリプトからシーンを読み込むことができます。
シーンを読み込むには
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が読み込まれますね。