- audio: 更新 audio-system 方法文档 - components: 新增 audio-listener/audio-source 组件方法文档,新增 remove-component 方法 - core: 更新 filewriter, types 文档 - math: 更新 box 方法文档 - memory: 更新 proxy-allocator 文档 - resources: 更新 loader 和 texture 文档 - rhi: 更新 opengl 设备、shader、swap-chain 文档 - threading: 更新 mutex 和 task-system 文档
4.1 KiB
4.1 KiB
GameObject
命名空间: XCEngine::Components
类型: class
头文件: XCEngine/Components/GameObject.h
描述: ECS 架构中的游戏对象实体,可附加组件并形成层级结构。
概述
GameObject 是 XCEngine ECS 架构中的实体(Entity)类,代表游戏世界中的一个个对象(如角色、道具、光源等)。每个 GameObject 可以通过 AddComponent 附加各种组件(如 TransformComponent、AudioSourceComponent)来定义其行为和数据。GameObject 支持层级结构(父子关系)、名称查找、标签系统和生命周期管理。
类型别名
| 别名 | 类型 | 描述 |
|---|---|---|
ID |
uint64_t |
游戏对象唯一标识符类型 |
INVALID_ID |
static constexpr ID |
无效 ID 常量,值为 0 |
公共方法
基础信息
| 方法 | 描述 |
|---|---|
GetID |
获取唯一标识符 |
GetUUID |
获取全局唯一标识符 |
GetName |
获取名称 |
SetName |
设置名称 |
GetScene |
获取所属场景 |
组件系统
| 方法 | 描述 |
|---|---|
GetTransform |
获取变换组件 |
AddComponent |
添加组件(模板方法) |
GetComponent |
获取组件(模板方法) |
GetComponents |
获取所有指定类型组件(模板方法) |
GetComponentInChildren |
在子对象中查找组件 |
GetComponentInParent |
在父对象中查找组件 |
GetComponentsInChildren |
获取所有子对象的指定组件 |
RemoveComponent |
移除组件(模板方法) |
层级结构
| 方法 | 描述 |
|---|---|
DetachFromParent |
从父对象分离 |
GetParent |
获取父对象 |
SetParent |
设置父对象 |
GetChildCount |
获取子对象数量 |
GetChild |
获取指定索引的子对象 |
GetChildren |
获取所有子对象 |
DetachChildren |
分离所有子对象 |
激活状态
| 方法 | 描述 |
|---|---|
IsActive |
检查自身激活状态 |
SetActive |
设置激活状态 |
IsActiveInHierarchy |
检查在层级中的激活状态 |
静态查找
| 方法 | 描述 |
|---|---|
Find |
查找指定名称的对象 |
FindObjectsOfType |
查找所有对象 |
FindGameObjectsWithTag |
查找具有指定标签的对象 |
生命周期
| 方法 | 描述 |
|---|---|
Awake |
唤醒对象 |
Start |
开始对象 |
Update |
每帧更新 |
FixedUpdate |
固定频率更新 |
LateUpdate |
晚更新 |
OnDestroy |
销毁回调 |
Destroy |
销毁对象 |
使用示例
#include <XCEngine/Components/GameObject.h>
#include <XCEngine/Components/TransformComponent.h>
#include <XCEngine/Components/AudioSourceComponent.h>
using namespace XCEngine::Components;
void CreatePlayer() {
GameObject* player = new GameObject("Player");
auto transform = player->AddComponent<TransformComponent>();
transform->SetPosition(Vector3(0, 0, 0));
auto audio = player->AddComponent<AudioSourceComponent>();
audio->SetVolume(0.8f);
player->SetParent(cameraObject);
}
void FindAndOperate() {
GameObject* enemy = GameObject::Find("Enemy");
if (enemy) {
enemy->SetActive(false);
}
}
相关文档
- Components 模块总览 - Components 模块总览
- Component - 组件基类
- TransformComponent - 变换组件
- Scene - 场景