Files
XCEngine/docs/api/components/game-object/game-object.md
ssdfasd a9d5a68dd6 docs: Add Component, GameObject, TransformComponent and Scene API documentation
- Add Component class documentation with lifecycle methods
- Add GameObject class documentation with component system
- Add TransformComponent documentation with transform methods
- Add Scene class documentation with GameObject management
- Add SceneManager singleton documentation with scene loading
- Update components.md overview with all component classes
- Update main.md navigation with Scene module
2026-03-22 03:33:55 +08:00

3.8 KiB
Raw Blame History

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 获取唯一标识符
GetName 获取名称
SetName 设置名称
GetScene 获取所属场景

组件系统

方法 描述
GetTransform 获取变换组件
AddComponent 添加组件(模板方法)
GetComponent 获取组件(模板方法)
GetComponents 获取所有指定类型组件(模板方法)
GetComponentInChildren 在子对象中查找组件
GetComponentInParent 在父对象中查找组件
GetComponentsInChildren 获取所有子对象的指定组件

层级结构

方法 描述
GetParent 获取父对象
SetParent 设置父对象
GetChildCount 获取子对象数量
GetChild 获取指定索引的子对象
GetChildren 获取所有子对象
DetachChildren 分离所有子对象

激活状态

方法 描述
IsActive 检查自身激活状态
SetActive 设置激活状态
IsActiveInHierarchy 检查在层级中的激活状态

静态查找

方法 描述
static Find(name) 查找指定名称的对象
static FindObjectsOfType() 查找所有对象
static FindGameObjectsWithTag(tag) 查找具有指定标签的对象

生命周期

方法 描述
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);
    }
}

相关文档