Unityで作っているゲームで、SceneManager.LoadSceneを使って初期化→ゲーム画面の遷移を作りました。
私のような簡単なゲームを作っている人でも使うってことは、他の人もSceneManager.LoadSceneを使うだろうと思ったので、UnityのSceneManager.LoadSceneの使い方をまとめます。
良かったら参考にしてください。
参考:UnityによるSceneManager.LoadSceneのマニュアル
UnityのSceneManager.LoadSceneの使い方【基本編】
※本記事のUnityのバージョン:Unity2020.3.7f1
UnityのSceneManager.LoadSceneを使うための設定
まずLoadSceneを使う時には、ロードするシーンをビルド設定に加えておく必要があります。
ロードするシーンを表示してから、Unityの[File] - [Build Settings ...]でビルド設定のダイアログを開きます。
ロードするシーンがScenes In Buildにない場合は、「Add Open Scenes」ボタンをクリックして追加しましょう。
これで設定はOKです。
UnityのSceneManager.LoadSceneの使い方【具体的スクリプト】
UnityEngine.SceneManagementが必要なので、usingで加えつつ、次のようにスクリプトを実装します。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class TestClass: MonoBehaviour { void Start(){ SceneManager.LoadScene("GameScene"); } }
今回はInitialSceneからGameSceneをロードするスクリプトを組みました。
SceneManager.LoadSceneの引数は、名前か番号を指定します。例の場合だと、名前で指定する場合は「InitialScene」もしくは「GameScene」を指定します。番号の場合は「0」か「1」です。なお、番号はビルド設定のダイアログのシーンの右端にある番号です。
UnityのSceneManager.LoadSceneの使い方【モード指定について】
実はSceneManager.LoadSceneには第2引数にロードするモードを指定することもできます。
そのモードは、LoadSceneMode.Singleか、LoadSceneMode.Additiveです。指定したとすると次のような記述になります。
SceneManager.LoadScene("GameScene", LoadSceneMode.Single);
それぞれのモードは次のような動きをします。
LoadSceneMode.Single | 現在のシーンを破棄して、新しくシーンをロードする(デフォルト) |
LoadSceneMode.Additive | 現在のシーンに追加して、シーンをロードする |
通常の使い方ではモードは特に指定する必要はないと思いますが、シーンを分けて作った場合は、Additiveを指定してSceneManager.LoadSceneを使うこともあるでしょう。
ただし、Additiveモードでロードした場合、不要になったシーンは明示的にUnLoadSceneメソッドを実行して、アンロードする必要があります。
例えばAdditiveモードでシーンをロードするケースとしては、複数のUIのパターンを別々のシーンにして、UIを切り替える場合に使えそうです。またオープンワールドなどのゲームで、メモリを節約するために、ユーザーの動きに合わせて、シーンをロード・アンロードしながらゲームを進めていく場合にも使えそうです。
まあ、私が作るような小さいゲームでは無用の長物だと思いますが、その内使う場面があるかもですね。
UnityのSceneManager.LoadSceneの使い方についてまとめてみた
UnityのSceneManager.LoadSceneの使い方をまとめました。
備忘録的にまとめている部分もあるので、参考になったなら幸いです。