跳转至

GFModel

API Reference / Kernel / 类索引

  • 路径:addons/gf/kernel/base/gf_model.gd
  • 模块:Kernel
  • 继承:Object
  • API:public
  • 类别:协议与扩展点 (protocol)
  • 首次版本:3.17.0

数据层抽象基类。 负责管理应用数据和业务状态。 子类可以实现 'init'、'async_init'、'ready'、'dispose' 来管理其生命周期。 三阶段初始化约定: - 'init' 阶段:只允许初始化自身内部变量,禁止跨模块获取依赖。 - 'async_init' 阶段:可使用 await,用于异步资源加载等操作。 - 'ready' 阶段:架构内所有模块均已完成 'init',可安全跨模块获取依赖。

成员概览

类型 名称 签名
属性 lifecycle_priority var lifecycle_priority: int = 0
方法 init func init() -> void:
方法 async_init func async_init() -> void:
方法 ready func ready() -> void:
方法 dispose func dispose() -> void:
方法 get_save_key func get_save_key() -> StringName:
方法 to_dict func to_dict() -> Dictionary:
方法 from_dict func from_dict(_data: Dictionary) -> void:
方法 is_lifecycle_active func is_lifecycle_active() -> bool:
方法 is_ready_in_architecture func is_ready_in_architecture() -> bool:
方法 get_utility func get_utility(utility_type: Script, require_ready: bool = false) -> Object:
方法 send_event func send_event(event_instance: Object) -> void:
方法 send_simple_event func send_simple_event(event_id: StringName, payload: Variant = null) -> void:

属性

lifecycle_priority

  • API:public
var lifecycle_priority: int = 0

生命周期优先级。数值越大越早执行 init/async_init/ready,dispose 时越晚释放。 默认 0 表示同优先级下按注册顺序执行;只有存在明确依赖顺序时才建议设置。

方法

init

  • API:public
func init() -> void:

第一阶段初始化。子类可以重写此方法。 约束:只允许初始化自身内部变量,不得跨模块获取依赖。

async_init

  • API:public
func async_init() -> void:

异步初始化阶段。子类可以重写此方法并在其中使用 await。 Godot 4 支持在 void 函数内部使用 await,框架的 Gf.init() 会串行且安全地 await 每个模块的 async_init(),不再需要返回 Signal。 约束:在 init() 之后、ready() 之前执行。

ready

  • API:public
func ready() -> void:

第三阶段初始化。子类可以重写此方法。 约束:此时所有模块已完成 'init',可安全跨模块获取依赖。

dispose

  • API:public
func dispose() -> void:

销毁模型。子类可以重写此方法。

get_save_key

  • API:public
func get_save_key() -> StringName:

获取架构级存档使用的稳定键。 默认返回空字符串,表示由 GFArchitecture 使用 class_name 或资源路径。

返回:稳定存档键;为空时使用框架默认规则。

to_dict

  • API:public
func to_dict() -> Dictionary:

将此模型的状态序列化为字典,用于存档、状态快照等。 子类应重写此方法以包含所有需要持久化的字段。 "type": "Dictionary", "additional_properties": true }

返回:包含模型状态数据的字典。

结构:

  • return {:

from_dict

  • API:public
func from_dict(_data: Dictionary) -> void:

从字典反序列化并恢复此模型的状态。 子类应重写此方法以恢复所有相关字段。 "type": "Dictionary", "additional_properties": true }

参数:

名称 说明
_data 包含状态数据的字典(通常来自 to_dict() 的结果)。

结构:

  • _data {:

is_lifecycle_active

  • API:public
func is_lifecycle_active() -> bool:

检查所属架构生命周期是否仍可安全继续异步写回。 async_init() 或其他 await 之后写入状态前建议检查该值。

返回:所属架构仍处于活动生命周期时返回 true。

is_ready_in_architecture

  • API:public
func is_ready_in_architecture() -> bool:

检查当前模块是否已经完成 ready 阶段。

返回:当前模块完成 ready 阶段时返回 true。

get_utility

  • API:public
func get_utility(utility_type: Script, require_ready: bool = false) -> Object:

通过类型获取 Utility 实例。

参数:

名称 说明
utility_type 工具的脚本类型。
require_ready 为 true 时,仅返回已完成 ready 阶段的实例。

返回:工具实例。

send_event

  • API:public
func send_event(event_instance: Object) -> void:

向架构发送事件。

参数:

名称 说明
event_instance 要分发的事件实例。

send_simple_event

  • API:public
func send_simple_event(event_id: StringName, payload: Variant = null) -> void:

发送轻量级 StringName 事件,避免高频 new() 带来的 GC 压力。 "type": "Variant", "description": "事件附加数据;由事件消费者约定结构。" }

参数:

名称 说明
event_id StringName 事件标识符。
payload 可选的事件附加数据。

结构:

  • payload {: