【Unity】マルチシーンのコードでのロード

UnityでSceneManagerクラスを使って、複数のシーンを同時にロードして管理するサンプルスクリプトをここに示します。このスクリプトは、プログラムによってシーンのロード、アンロード、および切り替えを制御する方法を提供します。これを利用して、一定のシーン構成を自動的にロードし、動的なシーン管理を実現できます。

定義済みのシーンをロードする管理スクリプト

スクリプト

using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneController : MonoBehaviour
{
    void Start()
    {
        LoadInitialScenes();
    }

    // 初期シーンをロードするメソッド
    void LoadInitialScenes()
    {
        SceneManager.LoadScene("MainScene", LoadSceneMode.Single); // メインシーンをシングルモードでロード
        SceneManager.LoadScene("UI", LoadSceneMode.Additive); // UIシーンをアディティブモードでロード
        SceneManager.LoadScene("Environment", LoadSceneMode.Additive); // 環境シーンもアディティブモードでロード
    }

    // シーンをアンロードするメソッド
    public void UnloadScene(string sceneName)
    {
        SceneManager.UnloadSceneAsync(sceneName);
    }

    // 新しいシーンをロードするメソッド
    public void LoadNewScene(string sceneName)
    {
        SceneManager.LoadScene(sceneName, LoadSceneMode.Additive);
    }
}

スクリプトの使用方法

  1. スクリプトの保存: このSceneControllerスクリプトをUnityプロジェクトの任意のスクリプトファイルとして保存します。
  2. コンポーネントとして追加: このスクリプトをゲームオブジェクトにコンポーネントとして追加します。これがシーン制御の中心となります。
  3. スクリプトのカスタマイズ: 必要に応じてシーン名を変更し、特定のゲームの要件に合わせてロードおよびアンロードするシーンを調整します。

機能説明

  • LoadInitialScenesメソッドでは、最初にロードするシーンを定義しています。MainSceneをシングルロードモードでロードし、その後に他のシーン(例:UI, Environment)をアディティブモードで追加しています。
  • UnloadSceneメソッドでは、不要になったシーンを非同期でアンロードします。
  • LoadNewSceneメソッドでは、新たにシーンをアディティブモードで追加します。

このようにSceneManagerを使用することで、Unityでの複数シーンの管理が非常に柔軟かつ効率的に行えます。

インスペクターで登録したシーンをロードする管理スクリプト

using UnityEngine;
using UnityEngine.SceneManagement;

public class AutoLoadScenes : MonoBehaviour
{
    // 最初にロードするシーンのリスト
    public string[] scenesToLoad;

    void Start()
    {
        // 既存のシーン以外のシーンをロードする
        foreach (string sceneName in scenesToLoad)
        {
            SceneManager.LoadScene(sceneName, LoadSceneMode.Additive);
        }
    }
}

Unity

Posted by hidepon