1. LoadScene を用いたシーン遷移
SceneManager.LoadSceneは、別のシーンに遷移する際に使います。このメソッドは、指定されたシーンをロードし、現在のシーンを置き換えます。
サンプルコード
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneLoader : MonoBehaviour
{
// シーンをロードする
public void LoadNewScene()
{
SceneManager.LoadScene("NewSceneName"); // "NewSceneName"はロードしたいシーン名
}
}
解説:
- このコードでは、
SceneManager.LoadSceneメソッドを使って新しいシーンをロードします。 - "NewSceneName" の部分には、ロードしたいシーンの名前かビルドインデックスを指定します。
- 現在のシーンは、新しいシーンに置き換わります。
2. DontDestroyOnLoad を使ってオブジェクトをシーン間で保持する
DontDestroyOnLoadは、シーンが切り替わっても特定のオブジェクトを破棄せずに保持するためのメソッドです。
例えば、ゲームの管理オブジェクトやBGMプレイヤーなど、シーン間で継続的に使いたいオブジェクトに使います。
サンプルコード
using UnityEngine;
public class PersistentObject : MonoBehaviour
{
void Awake()
{
DontDestroyOnLoad(this.gameObject); // このオブジェクトをシーン間で破棄しない
}
}
解説:
DontDestroyOnLoadは、AwakeまたはStartメソッドで呼び出され、オブジェクトがシーン遷移時に破棄されるのを防ぎます。this.gameObjectは、現在のゲームオブジェクトを指し、シーンが切り替わっても生き続けます。
3. プレハブのインスタンス化
シーン遷移後にオブジェクトを動的に生成するには、プレハブ(Prefab)のインスタンス化を行います。
サンプルコード
using UnityEngine;
public class PrefabSpawner : MonoBehaviour
{
public GameObject prefabToSpawn;
void Start()
{
Instantiate(prefabToSpawn, new Vector3(0, 0, 0), Quaternion.identity); // プレハブをシーンに生成
}
}
解説:
Instantiateメソッドを使って、シーンにプレハブを生成します。prefabToSpawnは、Inspectorウィンドウから割り当てるプレハブです。- 指定した位置 (
Vector3(0, 0, 0)) と回転(Quaternion.identity)で生成します。
4. 現在のシーンを残したまま、別のシーンを追加
SceneManager.LoadScene の第2引数にLoadSceneMode.Additiveを指定することで、既存のシーンに新 しいシーンを追加でロードすることができます。
サンプルコード
using UnityEngine;
using UnityEngine.SceneManagement;
public class AdditiveSceneLoader : MonoBehaviour
{
public void LoadAdditionalScene()
{
SceneManager.LoadScene("AdditionalScene", LoadSceneMode.Additive); // 現在のシーンを維持したまま別のシーンを追加でロード
}
}