ShitEngine 1.4.2
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
Component类 参考

组件基类 更多...

#include <Component.h>

类 Component 继承关系图:
Behavior BoxCollider2D CameraComponent CircleCollider2D Joint2D RendererComponent RigidBody2D TransformComponent UICanvas UIRendererComponent UITransform

Public 成员函数

 Component ()
virtual ~Component ()=default
virtual void onCreate ()
virtual void onAttach ()
virtual void onDetach ()
virtual void onDestroy ()
virtual void onAfterDeserialize ()
 反序列化完成后回调(Prefab::apply 逐组件调用一次,字段已写入)。 用于重建"直写字段绕过了 setter、无法自动触发的引擎状态"(如精灵纹理加载)。
virtual void onFieldChanged (const std::string &fieldName)
 检查器直接写反射字段后回调(字段名)。用于绕过 setter 的直写完成后 重新同步引擎状态(如 Box2D 刚体/形状)。默认无操作。
 Component (const Component &)=delete
Component & operator= (const Component &)=delete
 Component (Component &&)=delete
Component & operator= (Component &&)=delete
GameObject * getOwner () const
bool isRegistered () const
uint64_t getUuid () const
 组件持久 ID(随 .scene 序列化,是 ComponentRef<T> 引用字段的寻址依据)
void setUuid (uint64_t uuid)
 直接设置组件 ID(仅引擎反序列化/索引维护使用;正常流程由构造函数随机分配)

Protected 成员函数

void setRegistered (bool registered)

Protected 属性

GameObject * m_owner = nullptr
bool m_isRegistered = false
uint64_t m_uuid = 0
 持久 ID(构造时随机分配;0 仅在序列化前尚未赋值时短暂存在)

友元

class GameObject
class System

详细描述

组件基类

所有组件必须继承此类。

生命周期(按调用顺序): onCreate — 组件刚被构造、已绑定 owner,尚未挂载到场景 onAttach — 组件所属 GameObject 进入活动场景时 onDetach — 组件即将从场景中移除时(在 onDestroy 前调用) onDestroy — 组件被销毁时

构造及析构函数说明

◆ Component() [1/3]

Component ( )

◆ ~Component()

virtual ~Component ( )
virtualdefault

◆ Component() [2/3]

Component ( const Component & )
delete

◆ Component() [3/3]

Component ( Component && )
delete

成员函数说明

◆ getOwner()

GameObject * getOwner ( ) const
inline

◆ getUuid()

uint64_t getUuid ( ) const
inline

组件持久 ID(随 .scene 序列化,是 ComponentRef<T> 引用字段的寻址依据)

◆ isRegistered()

bool isRegistered ( ) const
inline

◆ onAfterDeserialize()

virtual void onAfterDeserialize ( )
inlinevirtual

反序列化完成后回调(Prefab::apply 逐组件调用一次,字段已写入)。 用于重建"直写字段绕过了 setter、无法自动触发的引擎状态"(如精灵纹理加载)。

被 AnimationComponent, Animator, SpriteRenderer , 以及 Tilemap 重载.

◆ onAttach()

◆ onCreate()

virtual void onCreate ( )
inlinevirtual

被 Behavior, Joint2D , 以及 RigidBody2D 重载.

◆ onDestroy()

◆ onDetach()

virtual void onDetach ( )
inlinevirtual

◆ onFieldChanged()

virtual void onFieldChanged ( const std::string & fieldName)
inlinevirtual

检查器直接写反射字段后回调(字段名)。用于绕过 setter 的直写完成后 重新同步引擎状态(如 Box2D 刚体/形状)。默认无操作。

被 AnimationComponent, Animator, BoxCollider2D, CircleCollider2D, Joint2D, RigidBody2D , 以及 Tilemap 重载.

◆ operator=() [1/2]

Component & operator= ( Component && )
delete

◆ operator=() [2/2]

Component & operator= ( const Component & )
delete

◆ setRegistered()

void setRegistered ( bool registered)
inlineprotected

◆ setUuid()

void setUuid ( uint64_t uuid)
inline

直接设置组件 ID(仅引擎反序列化/索引维护使用;正常流程由构造函数随机分配)

◆ GameObject

friend class GameObject
friend

◆ System

friend class System
friend

类成员变量说明

◆ m_isRegistered

bool m_isRegistered = false
protected

◆ m_owner

GameObject* m_owner = nullptr
protected

◆ m_uuid

uint64_t m_uuid = 0
protected

持久 ID(构造时随机分配;0 仅在序列化前尚未赋值时短暂存在)


该类的文档由以下文件生成: