75 lines
2.0 KiB
Markdown
75 lines
2.0 KiB
Markdown
|
|
# SceneManager
|
||
|
|
|
||
|
|
**命名空间**: `XCEngine::Components`
|
||
|
|
|
||
|
|
**类型**: `class (singleton)`
|
||
|
|
|
||
|
|
**头文件**: `XCEngine/Scene/SceneManager.h`
|
||
|
|
|
||
|
|
**描述**: 场景管理器单例,管理所有场景和活动场景。
|
||
|
|
|
||
|
|
## 概述
|
||
|
|
|
||
|
|
SceneManager 是 XCEngine 中的场景管理器单例,负责管理所有加载的场景、场景切换(同步/异步)、设置活动场景,以及发布场景加载/卸载事件。它是场景系统的入口点,提供场景创建、加载、卸载和切换的接口。
|
||
|
|
|
||
|
|
## 单例访问
|
||
|
|
|
||
|
|
| 方法 | 描述 |
|
||
|
|
|------|------|
|
||
|
|
| `static SceneManager& Get()` | 获取场景管理器单例实例 |
|
||
|
|
|
||
|
|
## 公共方法
|
||
|
|
|
||
|
|
### 场景管理
|
||
|
|
|
||
|
|
| 方法 | 描述 |
|
||
|
|
|------|------|
|
||
|
|
| [`CreateScene`](create-scene.md) | 创建新场景 |
|
||
|
|
| [`LoadScene`](load-scene.md) | 同步加载场景 |
|
||
|
|
| [`LoadSceneAsync`](load-scene-async.md) | 异步加载场景 |
|
||
|
|
| [`UnloadScene`](unload-scene.md) | 卸载场景 |
|
||
|
|
|
||
|
|
### 活动场景
|
||
|
|
|
||
|
|
| 方法 | 描述 |
|
||
|
|
|------|------|
|
||
|
|
| [`SetActiveScene`](set-active-scene.md) | 设置活动场景 |
|
||
|
|
| [`GetActiveScene`](get-active-scene.md) | 获取当前活动场景 |
|
||
|
|
|
||
|
|
### 查找
|
||
|
|
|
||
|
|
| 方法 | 描述 |
|
||
|
|
|------|------|
|
||
|
|
| [`GetScene`](get-scene.md) | 按名称获取场景 |
|
||
|
|
| [`GetAllScenes`](get-all-scenes.md) | 获取所有场景 |
|
||
|
|
|
||
|
|
### 事件
|
||
|
|
|
||
|
|
| 方法 | 描述 |
|
||
|
|
|------|------|
|
||
|
|
| [`OnSceneLoaded`](on-scene-loaded.md) | 场景加载完成事件 |
|
||
|
|
| [`OnSceneUnloaded`](on-scene-unloaded.md) | 场景卸载完成事件 |
|
||
|
|
| [`OnActiveSceneChanged`](on-active-scene-changed.md) | 活动场景变更事件 |
|
||
|
|
|
||
|
|
## 使用示例
|
||
|
|
|
||
|
|
```cpp
|
||
|
|
#include <XCEngine/Scene/SceneManager.h>
|
||
|
|
|
||
|
|
using namespace XCEngine::Components;
|
||
|
|
|
||
|
|
void SceneManagerExample() {
|
||
|
|
Scene* scene = SceneManager::Get().CreateScene("GameLevel");
|
||
|
|
SceneManager::Get().SetActiveScene(scene);
|
||
|
|
|
||
|
|
SceneManager::Get().LoadSceneAsync("levels/menu.json", [](Scene* loadedScene) {
|
||
|
|
printf("Scene loaded: %s\n", loadedScene->GetName().c_str());
|
||
|
|
});
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 相关文档
|
||
|
|
|
||
|
|
- [Scene 模块总览](../scene.md) - Scene 模块总览
|
||
|
|
- [Scene](scene/scene.md) - 场景类
|