docs: rebuild Scene API content
This commit is contained in:
@@ -1,44 +1,41 @@
|
||||
# SceneManager::UnloadScene
|
||||
|
||||
卸载资源或释放缓存。
|
||||
|
||||
该方法在 `XCEngine/Scene/SceneManager.h` 中提供了 2 个重载,当前页面统一汇总这些公开声明。
|
||||
|
||||
## 重载 1: 声明
|
||||
卸载一个已登记场景。
|
||||
|
||||
```cpp
|
||||
void UnloadScene(Scene* scene);
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `scene` - 参数语义详见头文件声明。
|
||||
|
||||
**返回:** `void` - 无返回值。
|
||||
|
||||
## 重载 2: 声明
|
||||
|
||||
```cpp
|
||||
void UnloadScene(const std::string& sceneName);
|
||||
```
|
||||
|
||||
**参数:**
|
||||
- `sceneName` - 参数语义详见头文件声明。
|
||||
## 行为说明
|
||||
|
||||
**返回:** `void` - 无返回值。
|
||||
当前有两个重载:
|
||||
|
||||
**示例:**
|
||||
- 指针重载:
|
||||
1. `scene == nullptr` 时直接返回。
|
||||
2. 如果它正好是 `m_activeScene`,先把活动场景清空。
|
||||
3. 在 `m_scenes` 里线性查找匹配指针。
|
||||
4. 找到后触发 [OnSceneUnloaded](OnSceneUnloaded.md),然后擦除。
|
||||
5. 如果活动场景为空且仍有剩余场景,选择 `m_scenes.begin()` 作为新的活动场景,并触发 [OnActiveSceneChanged](OnActiveSceneChanged.md)。
|
||||
- 字符串重载:先按 key 查找,再转到指针重载。
|
||||
|
||||
```cpp
|
||||
#include <XCEngine/Scene/SceneManager.h>
|
||||
## 参数
|
||||
|
||||
void Example() {
|
||||
XCEngine::Components::SceneManager object;
|
||||
// 根据上下文补齐参数后调用 SceneManager::UnloadScene(...)。
|
||||
(void)object;
|
||||
}
|
||||
```
|
||||
- `scene` - 待卸载场景指针。
|
||||
- `sceneName` - 待卸载场景 key。
|
||||
|
||||
## 返回值
|
||||
|
||||
- 无。
|
||||
|
||||
## 当前实现限制
|
||||
|
||||
- 后备活动场景来自 `unordered_map` 首元素,选择顺序不稳定。
|
||||
- 如果卸载的是最后一个活动场景,当前不会额外发出“活动场景变为 `nullptr`”的切换事件。
|
||||
- 指针重载内部需要线性扫描 map 找到匹配场景。
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [返回类总览](SceneManager.md)
|
||||
- [返回模块目录](../Scene.md)
|
||||
- [返回类型总览](SceneManager.md)
|
||||
- [OnSceneUnloaded](OnSceneUnloaded.md)
|
||||
- [OnActiveSceneChanged](OnActiveSceneChanged.md)
|
||||
|
||||
Reference in New Issue
Block a user