📜  怎么去unity不同的场景-C#(1)

📅  最后修改于: 2023-12-03 15:09:55.029000             🧑  作者: Mango

如何在 C# 中切换 Unity 中的不同场景

当你在 Unity 中构建一个游戏时,你可能需要在不同的场景之间进行切换。C# 是 Unity 中最常用的编程语言之一,因此在本文中,我们将会讨论如何在 C# 中切换不同场景。

获取场景管理器

Unity 提供了一个 SceneManager 工具类来管理场景,包括获取场景名称和切换场景。所以,我们的第一个步骤就是获取 SceneManager。这可以通过在 C# 中使用以下代码执行:

using UnityEngine.SceneManagement;

SceneManager sceneManager = SceneManager.Instance;
加载场景

一旦我们有 SceneManager 的实例,我们就可以使用 LoadScene() 方法来加载不同的场景。 LoadScene() 方法有两种重载方式,你可以根据你的需求选择其中之一。

// Loads scene by scene index
SceneManager.LoadScene(1);

// Loads scene by scene name
SceneManager.LoadScene("MyScene");
卸载场景

如果我们要在加载新场景之前删除旧场景,我们可以使用 UnloadScene() 方法。这个方法也有两个重载方式,可以通过场景索引或名称卸载场景。

// Unloads scene by scene index
SceneManager.UnloadSceneAsync(0);

// Unloads scene by scene name
SceneManager.UnloadSceneAsync("MyScene");
异步加载场景

在加载大场景或资源较大的场景时,我们可能需要异步加载场景以提高游戏性能和用户体验。我们可以使用 SceneManager.LoadSceneAsync() 方法来实现这个目标。

// Async Load Scene by scene name
AsyncOperation asyncSceneLoading = SceneManager.LoadSceneAsync("MyScene");

while (!asyncSceneLoading.isDone)
{
    Debug.Log("Loading progress: " + (asyncSceneLoading.progress * 100) + "%");
    yield return null;
}

在上面的例子中,我们加载了场景 " MyScene ",并通过 while 循环不断检查异步加载是否完成。我们可以使用 AsyncOperation 类来检索异步操作的状态和进度。 在这个例子中,我们使用 Debug.Log() 方法输出加载进度,这样我们就可以轻松地在控制台上看到执行过程。

构建场景

在我们的游戏中,根据用户选择或游戏控制流程,我们需要在运行时构建场景。我们可以使用 SceneManager.CreateScene() 方法创建新的场景。以下是在 C# 中创建场景的例子:

string sceneName = "MyNewScene";
Scene newScene = SceneManager.CreateScene(sceneName);

以上就是在 C# 中切换 Unity 不同场景的一些常见方法。现在,你已经了解了如何加载、卸载、异步加载和构建场景。 如果你有需要,可以根据自己的需求自由地使用它们。