ゲーム制作

UnityのSceneManager.LoadSceneの使い方まとめ

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 ...]でビルド設定のダイアログを開きます。

UnityのSceneManager.LoadSceneを使うための設定

ロードするシーンがScenes In Buildにない場合は、「Add  Open Scenes」ボタンをクリックして追加しましょう。

UnityのSceneManager.LoadSceneを使うための設定

これで設定は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の使い方をまとめました。

備忘録的にまとめている部分もあるので、参考になったなら幸いです。

 

-ゲーム制作