Files
XCEngine/docs/api/components/component/component.md

2.3 KiB
Raw Blame History

Component

命名空间: XCEngine::Components

类型: class (abstract)

头文件: XCEngine/Components/Component.h

描述: ECS 组件基类,定义所有组件的公共接口和生命周期。

概述

Component 是 XCEngine ECS 架构中的组件基类,所有具体组件(如 TransformComponent、AudioSourceComponent都继承自此类。它定义了组件的通用生命周期方法Awake、Start、Update、OnEnable、OnDisable、OnDestroy以及获取所属 GameObject 和场景的接口。组件通过友元类 GameObject 自动管理其所属游戏对象。

公共方法

方法 描述
GetName 获取组件名称(纯虚函数)
GetGameObject 获取所属 GameObject
transform 获取变换组件引用
GetScene 获取所属场景
IsEnabled 检查组件是否启用
SetEnabled 设置组件启用状态

虚方法(生命周期)

方法 描述
virtual void Awake() 组件创建后首次启用时调用
virtual void Start() 在首次更新前调用
virtual void Update(float deltaTime) 每帧更新
virtual void FixedUpdate() 固定频率更新(物理)
virtual void LateUpdate(float deltaTime) 晚于 Update 更新
virtual void OnEnable() 启用时调用
virtual void OnDisable() 禁用时调用
virtual void OnDestroy() 销毁时调用
virtual void Serialize(std::ostream& os) const 序列化组件数据
virtual void Deserialize(std::istream& is) 反序列化组件数据

使用示例

#include <XCEngine/Components/Component.h>
#include <XCEngine/Components/GameObject.h>

using namespace XCEngine::Components;

class MyComponent : public Component {
public:
    void Awake() override {
        printf("Awake: %s\n", GetName().c_str());
    }
    
    void Update(float deltaTime) override {
        // 每帧逻辑
    }
    
    std::string GetName() const override {
        return "MyComponent";
    }
};

相关文档