Объявление
public static AsyncOperation LoadSceneAsync(string sceneName, SceneManagement.LoadSceneMode mode = LoadSceneMode.Single);public static AsyncOperation LoadSceneAsync(int sceneBuildIndex, SceneManagement.LoadSceneMode mode = LoadSceneMode.Single);
public static AsyncOperation LoadSceneAsync(string sceneName, SceneManagement.LoadSceneParameters parameters);
public static AsyncOperation LoadSceneAsync(int sceneBuildIndex, SceneManagement.LoadSceneParameters parameters);
Параметры
sceneName | Имя или путь загружаемой сцены. |
sceneBuildIndex | Индекс сцены в настройках сборки для загрузки. |
mode | Если LoadSceneMode.Single, то все текущие сцены будут выгружены перед загрузкой. |
parameters | Структура, которая собирает различные параметры в одном месте, кроме имени и индекса. |
Возвращает
AsyncOperation Используйте AsyncOperation, чтобы определить, завершена ли операция.
Описание
Загружает сцену асинхронно в фоновом режиме.
Вы можете указать полный путь к сцене, путь, указанный в окне "Параметры сборки", или просто имя сцены. Если вы укажете только имя сцены, Unity загрузит первую совпадающую сцену из списка. Если у вас есть несколько сцен с одинаковым именем, но разными путями, вы должны использовать полный путь к сцене в настройках сборки.
Examples of supported formats:
"Scene1"
"Scenes/Scene1"
"Scenes/Others/Scene1"
"Assets/scenes/others/scene1.unity"
Примечание. При вводе имени сцены не учитывается регистр.
Если вы вызываете этот метод с недопустимым sceneName или sceneBuildIndex, Unity генерирует исключение.
using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Example : MonoBehaviour
{
void Update()
{
// Press the space key to start coroutine
if (Input.GetKeyDown(KeyCode.Space))
{
// Use a coroutine to load the Scene in the background
StartCoroutine(LoadYourAsyncScene());
}
}
IEnumerator LoadYourAsyncScene()
{
// The Application loads the Scene in the background as the current Scene runs.
// This is particularly good for creating loading screens.
// You could also load the Scene by using sceneBuildIndex. In this case Scene2 has
// a sceneBuildIndex of 1 as shown in Build Settings.
AsyncOperation asyncLoad = SceneManager.LoadSceneAsync("Scene2");
// Wait until the asynchronous scene fully loads
while (!asyncLoad.isDone)
{
yield return null;
}
}
}