シーンを遷移する方法
この記事では、Unityでシーンを遷移する方法について説明します。
SceneManagerクラス
UnityEngine.SceneManagement.SceneManager
クラスをクラスの関数を使用することで、シーンを遷移できます。遷移に使用する関数はすべて「静的メンバ関数」であるため、インスタンスの生成は必要ありません。
シーンの遷移に使用できる関数
シーンを遷移するには、下記の関数を利用できます。
LoadScene
シーンを遷移します( 読み込みます )。
宣言
public static void LoadScene( string sceneName, SceneManagement.LoadSceneMode mode = LoadSceneMode.Single );
public static void LoadScene( int sceneBuildIndex, SceneManagement.LoadSceneMode mode = LoadSceneMode.Single );
引数
sceneName | 読み込むシーンの名前、またはシーンファイルまでのパスです。 ※ ここで指定するシーンは、Build Settingsの「Scenes In Build」に設定されている必要があります。 |
sceneBuildIndex | 読み込むシーンのインデックスです。 ※ これは「Scenes In Build」で表示されている数になります。 |
mode | 読み込みの形式です。 ※ シーンを遷移させたい場合、 LoadSceneMode.single ( デフォルト引数 )を指定します。 |
例
SceneManager.LoadScene( "NextScene" );
SceneManager.LoadScene( "Assets/Scenes/NextScene.unity" );
var index = 2;
SceneManager.LoadScene( index );
LoadSceneAsync
シーンの読み込みが完了してから、シーンを遷移します( 非同期処理 )。
宣言
public static AsyncOperation LoadSceneAsync( string sceneName, SceneManagement.LoadSceneMode mode= LoadSceneMode.Single );
public static AsyncOperation LoadSceneAsync( int sceneBuildIndex, SceneManagement.LoadSceneMode mode= LoadSceneMode.Single );
引数
sceneName | 読み込むシーンの名前、またはシーンファイルまでのパスです。 |
sceneBuildIndex | 読み込むシーンのインデックスです。 |
mode | 読み込みの形式です。 |
戻り値
AsyncOperation | 非同期処理を操作するためのオブジェクトです。 |
例
using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Example : MonoBehaviour
{
void Start()
{
StartCoroutine( ChangeScene() );
}
IEnumerator ChangeScene()
{
var operation = SceneManager.LoadSceneAsync( "NextScene" );
operation.completed += ( self ) => Debug.Log( "Loaded." );
while ( !operation.isDone )
{
yield return null;
Debug.Log( "Now Loading." );
}
}
}