91 lines
2.8 KiB
Markdown
91 lines
2.8 KiB
Markdown
|
|
# Scene
|
|||
|
|
|
|||
|
|
**命名空间**: `XCEngine::Components`
|
|||
|
|
|
|||
|
|
**类型**: `class`
|
|||
|
|
|
|||
|
|
**头文件**: `XCEngine/Scene/Scene.h`
|
|||
|
|
|
|||
|
|
**描述**: 场景类,管理场景中的所有 GameObject 和层级结构。
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
Scene 是 XCEngine 中的场景类,代表一个独立的游戏空间(如主菜单、游戏关卡、过场动画等)。每个 Scene 包含一个 GameObject 层级树,通过根对象(Root GameObjects)组织。Scene 负责创建和销毁 GameObject,提供查找功能,支持场景保存/加载,并发布 GameObject 创建和销毁事件。
|
|||
|
|
|
|||
|
|
## 类型别名
|
|||
|
|
|
|||
|
|
| 别名 | 类型 | 描述 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| `GameObjectID` | `uint64_t` | 游戏对象唯一标识符类型 |
|
|||
|
|
| `INVALID_GAMEOBJECT_ID` | `static constexpr GameObjectID` | 无效 ID 常量,值为 0 |
|
|||
|
|
|
|||
|
|
## 公共方法
|
|||
|
|
|
|||
|
|
### 基础信息
|
|||
|
|
|
|||
|
|
| 方法 | 描述 |
|
|||
|
|
|------|------|
|
|||
|
|
| [`GetName`](get-name.md) | 获取场景名称 |
|
|||
|
|
| [`SetName`](set-name.md) | 设置场景名称 |
|
|||
|
|
| [`IsActive`](is-active.md) | 检查场景是否激活 |
|
|||
|
|
| [`SetActive`](set-active.md) | 设置场景激活状态 |
|
|||
|
|
|
|||
|
|
### GameObject 管理
|
|||
|
|
|
|||
|
|
| 方法 | 描述 |
|
|||
|
|
|------|------|
|
|||
|
|
| [`CreateGameObject`](create-game-object.md) | 创建游戏对象 |
|
|||
|
|
| [`DestroyGameObject`](destroy-game-object.md) | 销毁游戏对象 |
|
|||
|
|
|
|||
|
|
### 查找
|
|||
|
|
|
|||
|
|
| 方法 | 描述 |
|
|||
|
|
|------|------|
|
|||
|
|
| [`Find`](find.md) | 按名称查找 GameObject |
|
|||
|
|
| [`FindGameObjectWithTag`](find-game-object-with-tag.md) | 按标签查找 GameObject |
|
|||
|
|
| [`FindObjectOfType`](find-object-of-type.md) | 查找指定类型的组件 |
|
|||
|
|
| [`FindObjectsOfType`](find-objects-of-type.md) | 查找所有指定类型的组件 |
|
|||
|
|
| [`GetRootGameObjects`](get-root-game-objects.md) | 获取所有根对象 |
|
|||
|
|
|
|||
|
|
### 生命周期
|
|||
|
|
|
|||
|
|
| 方法 | 描述 |
|
|||
|
|
|------|------|
|
|||
|
|
| [`Update`](update.md) | 每帧更新场景 |
|
|||
|
|
| [`FixedUpdate`](fixed-update.md) | 固定频率更新 |
|
|||
|
|
| [`LateUpdate`](late-update.md) | 晚更新 |
|
|||
|
|
| [`Load`](load.md) | 加载场景 |
|
|||
|
|
| [`Save`](save.md) | 保存场景 |
|
|||
|
|
|
|||
|
|
### 事件
|
|||
|
|
|
|||
|
|
| 方法 | 描述 |
|
|||
|
|
|------|------|
|
|||
|
|
| [`OnGameObjectCreated`](on-game-object-created.md) | GameObject 创建事件 |
|
|||
|
|
| [`OnGameObjectDestroyed`](on-game-object-destroyed.md) | GameObject 销毁事件 |
|
|||
|
|
|
|||
|
|
## 使用示例
|
|||
|
|
|
|||
|
|
```cpp
|
|||
|
|
#include <XCEngine/Scene/Scene.h>
|
|||
|
|
#include <XCEngine/Components/GameObject.h>
|
|||
|
|
|
|||
|
|
using namespace XCEngine::Components;
|
|||
|
|
|
|||
|
|
void SceneExample(Scene* scene) {
|
|||
|
|
GameObject* player = scene->CreateGameObject("Player");
|
|||
|
|
GameObject* enemy = scene->CreateGameObject("Enemy");
|
|||
|
|
|
|||
|
|
scene->SetActive(true);
|
|||
|
|
|
|||
|
|
GameObject* found = scene->Find("Player");
|
|||
|
|
auto cameras = scene->FindObjectsOfType<TransformComponent>();
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 相关文档
|
|||
|
|
|
|||
|
|
- [Scene 模块总览](../scene.md) - Scene 模块总览
|
|||
|
|
- [SceneManager](scene-manager/scene-manager.md) - 场景管理器
|
|||
|
|
- [GameObject](../components/game-object/game-object.md) - 游戏对象
|