![]() |
ShitEngine 1.4.2
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
|
行为基类 —— 用于编写自定义游戏逻辑 更多...
#include <Behavior.h>
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 自动驱动,无需手动调用。
|
default |
|
overridedefault |
|
inline |
onStart 是否已执行过
|
overridevirtual |
重载 Component .
|
virtual |
与 other 开始接触(每对象对一次)
|
virtual |
与 other 结束接触
|
virtual |
与 other 持续接触(每帧一次)
|
overridevirtual |
重载 Component .
|
overridevirtual |
重载 Component .
|
overridevirtual |
重载 Component .
|
virtual |
固定步长执行(与物理同拍;Scene 固定步循环驱动)
|
virtual |
首次 update 前执行一次
被 AnimationComponent, Animator , 以及 AudioSource 重载.
|
virtual |
每帧执行
被 AnimationComponent , 以及 Animator 重载.
|
inline |
|
friend |
|
protected |