版本:Unity 6 (6000.0)
语言English
  • C#

SceneManager.LoadSceneAsync

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法采纳所有提交,但我们会阅读用户提出的每一个建议更改,并在适用情况下进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

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 将加载列表中匹配的第一个场景。如果您有多个名称相同但路径不同的场景,则应在构建设置中使用完整的场景路径。

支持的格式示例
"Scene1"
"Scenes/Scene1"
"Scenes/Others/Scene1"
"Assets/scenes/others/scene1.unity"

注意:场景名称输入不区分大小写。
如果使用无效的 sceneNamesceneBuildIndex 调用此方法,Unity 将抛出异常。

注意:要加载的场景的名称可以不区分大小写。

如果加载了单个模式场景,Unity 会自动调用 Resources.UnloadUnusedAssets。

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; } } }