Объявление
public static void LoadScene(int sceneBuildIndex, SceneManagement.LoadSceneMode mode = LoadSceneMode.Single);public static void LoadScene(string sceneName, SceneManagement.LoadSceneMode mode = LoadSceneMode.Single);
Параметры
sceneName | Имя или путь загружаемой сцены. |
sceneBuildIndex | Индекс сцены в настройках сборки для загрузки. |
mode | Позволяет указать, следует ли загружать сцену аддитивно. Подробнее об этих параметрах см. в разделе LoadSceneMode. |
Описание
Загружает сцену по ее имени или индексу в настройках сборки.
Примечание. В большинстве случаев, чтобы избежать пауз или сбоев производительности при загрузке, следует использовать асинхронную версию этой команды: LoadSceneAsync. .
При использовании SceneManager.LoadScene сцена загружается в следующем кадре, то есть загружается не сразу. Такое полуасинхронное поведение может привести к задержке кадров и сбить с толку, поскольку загрузка не завершается сразу.
Поскольку загрузка должна завершиться в следующем визуализируемом кадре, вызов SceneManager.LoadScene приводит к принудительному завершению всех предыдущих AsyncOperations, даже если AsyncOperation.allowSceneActivation имеет значение false. Чтобы избежать этого, используйте вместо этого LoadSceneAsync.
Указанное sceneName
может быть либо только именем сцены, без расширения .unity
, либо путем, как показано на окно BuildSettings все еще без расширения .unity
. Если указано только имя сцены, будет загружена первая совпадающая сцена в списке. Если у вас есть несколько сцен с одинаковым именем, но разными путями, вы должны использовать полный путь.
Обратите внимание, что sceneName
нечувствителен к регистру, за исключением случаев, когда вы загружаете сцену из AssetBundle.
Информацию об открытии сцен в редакторе см. в разделе EditorSceneManager.OpenScene.
SceneA
может дополнительно загружать SceneB
несколько раз. Обычное имя используется для каждой загруженной сцены. Если SceneA
загружает SceneB
десять раз, каждая SceneB
будет иметь одно и то же имя. Поиск конкретной добавленной сцены невозможен.
using UnityEngine;
using UnityEngine.SceneManagement;
public class ExampleClass : MonoBehaviour
{
void Start()
{
// Only specifying the sceneName or sceneBuildIndex will load the Scene with the Single mode
SceneManager.LoadScene("OtherSceneName", LoadSceneMode.Additive);
}
}
// Загружаем пакет ресурсов, содержащий сцены.
// Когда пользователь нажимает кнопку, открывается первая Scene в наборе ресурсов.
// загружается и заменяет текущую Scene.
using UnityEngine;
using UnityEngine.SceneManagement;
public class LoadScene : MonoBehaviour
{
private AssetBundle myLoadedAssetBundle;
private string[] scenePaths;
// Use this for initialization
void Start()
{
myLoadedAssetBundle = AssetBundle.LoadFromFile("Assets/AssetBundles/scenes");
scenePaths = myLoadedAssetBundle.GetAllScenePaths();
}
void OnGUI()
{
if (GUI.Button(new Rect(10, 10, 100, 30), "Change Scene"))
{
Debug.Log("Scene2 loading: " + scenePaths[0]);
SceneManager.LoadScene(scenePaths[0], LoadSceneMode.Single);
}
}
}
В следующих двух примерах сценария показано, как LoadScene может загружать сцены из настроек сборки. LoadSceneA
использует имя сцены для загрузки. LoadSceneB
использует номер загружаемой сцены. Скрипты работают вместе с файлом LoadSceneA
// СценаА.
// SceneA получает имя сцены, которое
// загружаем SceneB из Settings сборки
using UnityEngine;
using UnityEngine.SceneManagement;
public class LoadScenesA : MonoBehaviour
{
void Start()
{
Debug.Log("LoadSceneA");
}
public void LoadA(string scenename)
{
Debug.Log("sceneName to load: " + scenename);
SceneManager.LoadScene(scenename);
}
}
LoadSceneB
файл.
// СценаБ.
// SceneB получает sceneBuildIndex, равный 0, что
// загружаем SceneA из Settings сборки
using UnityEngine;
using UnityEngine.SceneManagement;
public class LoadScenesB : MonoBehaviour
{
void Start()
{
Debug.Log("LoadSceneB");
}
public void LoadB(int sceneANumber)
{
Debug.Log("sceneBuildIndex to load: " + sceneANumber);
SceneManager.LoadScene(sceneANumber);
}
}
Объявление
public static SceneManagement.Scene LoadScene(int sceneBuildIndex, SceneManagement.LoadSceneParameters parameters);public static SceneManagement.Scene LoadScene(string sceneName, SceneManagement.LoadSceneParameters parameters);
Параметры
sceneName | Имя или путь загружаемой сцены. |
sceneBuildIndex | Индекс сцены в настройках сборки для загрузки. |
parameters | Различные параметры, используемые для загрузки сцены. |
Возвращает
Scene Дескриптор загружаемой сцены.
Описание
Загружает сцену по ее имени или индексу в настройках сборки.
Пример использования двух сцен с именами Scene1
и Scene2
. ExampleScript1.cs предназначен для scene1
, а ExampleScript2.cs — для scene2
.
using UnityEngine;
using UnityEngine.SceneManagement;
// Это сцена1. Он загружает 3 копии сцены2.
// Каждая копия имеет одно и то же имя.
public class ExampleScript1 : MonoBehaviour
{
private Scene scene;
private void Start()
{
var parameters = new LoadSceneParameters(LoadSceneMode.Additive);
scene = SceneManager.LoadScene("scene2", parameters);
Debug.Log("Load 1 of scene2: " + scene.name);
scene = SceneManager.LoadScene("scene2", parameters);
Debug.Log("Load 2 of scene2: " + scene.name);
scene = SceneManager.LoadScene("scene2", parameters);
Debug.Log("Load 3 of scene2: " + scene.name);
}
}
Scene2:
using UnityEngine;
// создаем случайно размещенный куб
public class ExampleScript2 : MonoBehaviour
{
private void Start()
{
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.transform.position = new Vector3(Random.Range(-5.0f, 5.0f), 0.0f, Random.Range(-5.0f, 5.0f));
}
}