Files
XCEngine/docs/api/scene/scene/scene.md

91 lines
2.8 KiB
Markdown
Raw Normal View History

# 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) - 游戏对象