当前位置:   article > 正文

SceneManager的所有用法

scenemanager

场景:

SceneManager是Unity中用于管理场景的静态类,提供了一些常用的场景管理功能。下面是SceneManager的一些常用用法:


方法

加载场景

public static Scene LoadScene(string sceneName, LoadSceneMode mode = LoadSceneMode.Single);

  • 1
  • 2

其中,sceneName参数是要加载的场景的名称,mode参数是加载场景的模式,有以下两种:

LoadSceneMode.Single:加载一个新场景,关闭当前场景。
LoadSceneMode.Additive:加载一个新场景,添加到当前场景中。

SceneManager.LoadScene("Scene2");

  • 1
  • 2

异步加载场景

public static AsyncOperation LoadSceneAsync(string sceneName, LoadSceneMode mode = LoadSceneMode.Single);
  • 1

该函数可以异步加载场景,可以通过回调函数来判断场景是否加载完成。示例代码:

SceneManager.LoadSceneAsync("Scene2").completed += operation => {
    Debug.Log("Scene2 loaded");
};
  • 1
  • 2
  • 3

卸载场景

public static bool UnloadSceneAsync(int sceneBuildIndex);
public static bool UnloadSceneAsync(string sceneName);
  • 1
  • 2

其中,sceneBuildIndex参数是要卸载的场景的索引,sceneName参数是要卸载的场景的名称。示例代码:

SceneManager.UnloadSceneAsync("Scene2");
  • 1

获取当前场景

public static Scene GetActiveScene();
示例代码:

Scene scene = SceneManager.GetActiveScene();
Debug.Log("Current scene: " + scene.name);
  • 1
  • 2
  • 3
  • 4
  • 5

获取场景中的所有游戏对象

public static Scene GetSceneByName(string name);
public static Scene GetSceneByPath(string scenePath);
public static Scene GetSceneByBuildIndex(int buildIndex);
public static GameObject[] GetActiveSceneGameObjects();
  • 1
  • 2
  • 3
  • 4

其中,GetSceneByName函数根据场景名称获取场景,GetSceneByPath函数根据场景路径获取场景,GetSceneByBuildIndex函数根据场景索引获取场景,GetActiveSceneGameObjects函数获取当前场景中的所有游戏对象。示例代码:

Scene scene = SceneManager.GetSceneByName("Scene2");
GameObject[] gameObjects = scene.GetRootGameObjects();
  • 1
  • 2

判断场景是否已加载

public static bool SceneLoaded(int sceneBuildIndex);
public static bool SceneLoaded(string sceneName);
示例代码:

bool loaded = SceneManager.SceneLoaded("Scene2");
Debug.Log("Scene2 loaded: " + loaded);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

设置场景的光照贴图

public static void SetLightmapPreviewTexture(Texture2D texture);
示例代码:

Texture2D lightmap = Resources.Load<Texture2D>("Lightmap");
SceneManager.SetLightmapPreviewTexture(lightmap);
  • 1
  • 2
  • 3
  • 4
  • 5

设置场景的雾效

public static void SetFog(FogMode mode, Color color, float density, float start, float end);
示例代码:

SceneManager.SetFog(FogMode.Exponential, Color.gray, 0.01f, 10f, 100f);
  • 1
  • 2
  • 3
  • 4

设置场景的天空盒

public static void SetActiveSceneSkybox(Material skybox);
示例代码:

Material skybox = Resources.Load<Material>("Skybox");
SceneManager.SetActiveSceneSkybox(skybox);
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/99784
推荐阅读