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

行为基类 —— 用于编写自定义游戏逻辑 更多...

#include <Behavior.h>

类 Behavior 继承关系图:
Component AnimationComponent Animator AudioSource

Public 成员函数

 Behavior ()=default
 ~Behavior () override=default
void onCreate () override
void onAttach () override
virtual void onStart ()
 首次 update 前执行一次
virtual void onFixedUpdate (float fixedDt)
 固定步长执行(与物理同拍;Scene 固定步循环驱动)
virtual void onUpdate ()
 每帧执行
virtual void onCollisionEnter (GameObject *other)
 与 other 开始接触(每对象对一次)
virtual void onCollisionStay (GameObject *other)
 与 other 持续接触(每帧一次)
virtual void onCollisionExit (GameObject *other)
 与 other 结束接触
void onDetach () override
void onDestroy () override
bool isStarted () const
 onStart 是否已执行过
void setStarted (bool isStarted)
Public 成员函数 继承自 Component
 Component ()
virtual ~Component ()=default
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 属性

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

友元

class GameObject

额外继承的成员函数

Protected 成员函数 继承自 Component
void setRegistered (bool registered)

详细描述

行为基类 —— 用于编写自定义游戏逻辑

继承自 Component,扩展出 onStart / onFixedUpdate / onUpdate 三个阶段: onCreate → onAttach → onStart → (固定步)onFixedUpdate / (每帧)onUpdate → onDetach → onDestroy

onStart 在首次 update 前执行一次,适用于缓存指针。 onFixedUpdate 固定步长执行(默认 60Hz、与物理步进同拍、先于本步物理模拟),适用于施力/设速等需稳定帧率的逻辑。 onUpdate 每渲染帧执行,适用于输入、移动、碰撞检测等。

碰撞回调(onCollisionEnter/Stay/Exit)由 PhysicsSystem2D 在物理步进后驱动, 仅已启动(onStart 已执行)的行为收到,参数为碰撞对方的 GameObject。

挂载后由 BehaviorSystem 自动驱动,无需手动调用。

构造及析构函数说明

◆ Behavior()

Behavior ( )
default

◆ ~Behavior()

~Behavior ( )
overridedefault

成员函数说明

◆ isStarted()

bool isStarted ( ) const
inline

onStart 是否已执行过

◆ onAttach()

void onAttach ( )
overridevirtual

重载 Component .

◆ onCollisionEnter()

virtual void onCollisionEnter ( GameObject * other)
virtual

与 other 开始接触(每对象对一次)

◆ onCollisionExit()

virtual void onCollisionExit ( GameObject * other)
virtual

与 other 结束接触

◆ onCollisionStay()

virtual void onCollisionStay ( GameObject * other)
virtual

与 other 持续接触(每帧一次)

◆ onCreate()

void onCreate ( )
overridevirtual

重载 Component .

◆ onDestroy()

void onDestroy ( )
overridevirtual

重载 Component .

◆ onDetach()

void onDetach ( )
overridevirtual

重载 Component .

◆ onFixedUpdate()

virtual void onFixedUpdate ( float fixedDt)
virtual

固定步长执行(与物理同拍;Scene 固定步循环驱动)

◆ onStart()

virtual void onStart ( )
virtual

首次 update 前执行一次

被 AnimationComponent, Animator , 以及 AudioSource 重载.

◆ onUpdate()

virtual void onUpdate ( )
virtual

每帧执行

被 AnimationComponent , 以及 Animator 重载.

◆ setStarted()

void setStarted ( bool isStarted)
inline

◆ GameObject

friend class GameObject
friend

类成员变量说明

◆ m_isStarted

bool m_isStarted = false
protected

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