📅  最后修改于: 2023-12-03 15:09:55.029000             🧑  作者: Mango
当你在 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 不同场景的一些常见方法。现在,你已经了解了如何加载、卸载、异步加载和构建场景。 如果你有需要,可以根据自己的需求自由地使用它们。