【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);
}
}
スクリプトの使用方法
- スクリプトの保存: この
SceneController
スクリプトをUnityプロジェクトの任意のスクリプトファイルとして保存します。 - コンポーネントとして追加: このスクリプトをゲームオブジェクトにコンポーネントとして追加します。これがシーン制御の中心となります。
- スクリプトのカスタマイズ: 必要に応じてシーン名を変更し、特定のゲームの要件に合わせてロードおよびアンロードするシーンを調整します。
機能説明
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);
}
}
}
ディスカッション
コメント一覧
まだ、コメントがありません