GFSaveSource¶
API Reference / Save / 类索引
- 路径:
addons/gf/extensions/save/core/gf_save_source.gd - 模块:
Save - 继承:
Node - API:
public - 类别:协议与扩展点 (
protocol) - 首次版本:
3.17.0
存档图数据源节点。 Source 是存档图的最小数据入口。项目可继承并重写 gather/apply, 也可配置节点序列化器保存通用节点属性。
成员概览¶
| 类型 | 名称 | 签名 |
|---|---|---|
| 属性 | source_key |
var source_key: StringName = &"" |
| 属性 | target_node_path |
var target_node_path: NodePath |
| 属性 | enabled |
var enabled: bool = true |
| 属性 | save_enabled |
var save_enabled: bool = true |
| 属性 | load_enabled |
var load_enabled: bool = true |
| 属性 | phase |
var phase: int = GFSaveScope.Phase.NORMAL |
| 属性 | serializers |
var serializers: Array[GFNodeSerializer] = [] |
| 属性 | use_registry_serializers |
var use_registry_serializers: bool = false |
| 属性 | descriptor_extra |
var descriptor_extra: Dictionary = {} |
| 方法 | get_source_key |
func get_source_key() -> StringName: |
| 方法 | get_target_node |
func get_target_node() -> Node: |
| 方法 | describe_source |
func describe_source(scope: Node = null) -> Dictionary: |
| 方法 | make_result |
func make_result(ok: bool, error: String = "") -> Dictionary: |
| 方法 | _can_save_source |
func _can_save_source(_context: Dictionary = {}) -> bool: |
| 方法 | _can_load_source |
func _can_load_source(_context: Dictionary = {}) -> bool: |
| 方法 | _before_save |
func _before_save(_context: Dictionary = {}) -> void: |
| 方法 | _gather_save_data |
func _gather_save_data( context: Dictionary = {}, serializer_registry: GFNodeSerializerRegistry = null ) -> Variant: |
| 方法 | _apply_save_data |
func _apply_save_data( data: Variant, context: Dictionary = {}, serializer_registry: GFNodeSerializerRegistry = null ) -> Dictionary: |
| 方法 | _after_load |
func _after_load(_data: Variant, _context: Dictionary = {}) -> void: |
属性¶
source_key¶
- API:
public
Source 稳定标识。留空时回退到节点名。
target_node_path¶
- API:
public
目标节点路径。留空时默认序列化父节点。
enabled¶
- API:
public
是否启用该 Source。
save_enabled¶
- API:
public
是否参与保存。
load_enabled¶
- API:
public
是否参与加载。
phase¶
- API:
public
执行阶段。数值越小越早执行。
serializers¶
- API:
public
Source 局部序列化器。为空时可使用注册表中的默认序列化器。
use_registry_serializers¶
- API:
public
是否在未配置局部序列化器时使用注册表默认序列化器。
descriptor_extra¶
- API:
public
附加描述字段。
结构:
descriptor_extra: Dictionary,会合并进 describe_source() 返回值的项目自定义描述字段。
方法¶
get_source_key¶
- API:
public
获取 Source 稳定标识。
返回:来源键。
get_target_node¶
- API:
public
获取目标节点。
返回:目标节点;不存在时返回 null。
describe_source¶
- API:
public
构造 Source 描述。
参数:
| 名称 | 说明 |
|---|---|
scope |
当前 Scope。 |
返回:描述字典。
结构:
return: Dictionary,包含 descriptor_extra、source_key、phase,并在可用时包含 node_path。
make_result¶
- API:
public
构造统一结果。
参数:
| 名称 | 说明 |
|---|---|
ok |
是否成功。 |
error |
错误描述。 |
返回:结果字典。
结构:
return: Dictionary,包含 ok: bool 与 error: String。
_can_save_source¶
- API:
protected
判断是否可保存。
参数:
| 名称 | 说明 |
|---|---|
_context |
调用上下文字典。 |
返回:可保存时返回 true。
结构:
_context: Dictionary,可包含 pipeline_context、pipeline_shared、include_pipeline_trace 等流程字段。
_can_load_source¶
- API:
protected
判断是否可加载。
参数:
| 名称 | 说明 |
|---|---|
_context |
调用上下文字典。 |
返回:可加载时返回 true。
结构:
_context: Dictionary,可包含 pipeline_context、pipeline_shared、include_pipeline_trace 等流程字段。
_before_save¶
- API:
protected
保存前 Hook。
参数:
| 名称 | 说明 |
|---|---|
_context |
调用上下文字典。 |
结构:
_context: Dictionary,可包含 pipeline_context、pipeline_shared、include_pipeline_trace 等流程字段。
_gather_save_data¶
- API:
protected
func _gather_save_data( context: Dictionary = {}, serializer_registry: GFNodeSerializerRegistry = null ) -> Variant:
采集保存数据。
参数:
| 名称 | 说明 |
|---|---|
context |
调用上下文字典。 |
serializer_registry |
可选节点序列化器注册表。 |
返回:可写入存档的数据。
结构:
context: Dictionary,可包含 pipeline_context、pipeline_shared、include_pipeline_trace 等流程字段。return: Variant,通常为 Dictionary;默认实现返回包含 serializers: Array[Dictionary] 的载荷,或空 Dictionary。
_apply_save_data¶
- API:
protected
func _apply_save_data( data: Variant, context: Dictionary = {}, serializer_registry: GFNodeSerializerRegistry = null ) -> Dictionary:
应用保存数据。
参数:
| 名称 | 说明 |
|---|---|
data |
保存数据。 |
context |
调用上下文字典。 |
serializer_registry |
可选节点序列化器注册表。 |
返回:结果字典。
结构:
data: Variant,默认实现要求为包含 serializers: Array[Dictionary] 的 Dictionary。context: Dictionary,可包含 pipeline_context、pipeline_shared、include_pipeline_trace 等流程字段。return: Dictionary,包含 ok: bool、error: String,或序列化器应用结果字段。
_after_load¶
- API:
protected
加载后 Hook。
参数:
| 名称 | 说明 |
|---|---|
_data |
已应用的数据。 |
_context |
调用上下文字典。 |
结构:
_data: Variant,当前 Source 已应用的保存数据。_context: Dictionary,可包含 pipeline_context、pipeline_shared、include_pipeline_trace 等流程字段。