GFConfigTableMergePolicy¶
API Reference / Standard / 类索引
- 路径:
addons/gf/standard/utilities/config/gf_config_table_merge_policy.gd - 模块:
Standard - 继承:
Resource - API:
public - 类别:资源定义 (
resource_definition) - 首次版本:
3.17.0
配置表补丁合并策略。 描述如何识别记录、覆盖记录和处理删除标记。它只定义通用合并规则, 不绑定热更、模组、DLC 或任意项目业务语义。
成员概览¶
| 类型 | 名称 | 签名 |
|---|---|---|
| 枚举 | UpdateMode |
enum UpdateMode |
| 属性 | key_fields |
var key_fields: PackedStringArray = PackedStringArray(["id"]) |
| 属性 | update_mode |
var update_mode: UpdateMode = UpdateMode.MERGE_FIELDS |
| 属性 | allow_insert |
var allow_insert: bool = true |
| 属性 | allow_update |
var allow_update: bool = true |
| 属性 | allow_delete |
var allow_delete: bool = true |
| 属性 | delete_marker_field |
var delete_marker_field: StringName = &"_delete" |
| 属性 | delete_marker_value |
var delete_marker_value: Variant = true |
| 属性 | preserve_base_order |
var preserve_base_order: bool = true |
| 属性 | metadata |
var metadata: Dictionary = {} |
| 方法 | is_delete_record |
func is_delete_record(record: Dictionary) -> bool: |
| 方法 | make_record_key |
func make_record_key(record: Dictionary, outer_key: Variant = null) -> String: |
| 方法 | merge_record |
func merge_record(base_record: Dictionary, patch_record: Dictionary) -> Dictionary: |
| 方法 | duplicate_policy |
func duplicate_policy() -> GFConfigTableMergePolicy: |
| 方法 | describe |
func describe() -> Dictionary: |
枚举¶
UpdateMode¶
- API:
public
enum UpdateMode { ## patch 记录整体替换 base 记录。 REPLACE_RECORD, ## patch 记录与 base 记录按字段合并,嵌套 Dictionary 递归合并。 MERGE_FIELDS, }
记录更新方式。
属性¶
key_fields¶
- API:
public
用于生成记录键的字段。为空时 Dictionary 表会优先使用外层 key。
update_mode¶
- API:
public
更新已有记录时采用的合并方式。
allow_insert¶
- API:
public
是否允许 patch 插入新记录。
allow_update¶
- API:
public
是否允许 patch 更新已有记录。
allow_delete¶
- API:
public
是否允许 patch 删除已有记录。
delete_marker_field¶
- API:
public
删除标记字段。为空时不启用删除标记。
delete_marker_value¶
- API:
public
删除标记需要匹配的值。
结构:
delete_marker_value: Variant,与删除标记字段比较的目标值。
preserve_base_order¶
- API:
public
Array 表输出时是否保留 base 原有顺序,并把新增记录追加到末尾。
metadata¶
- API:
public
可选元数据,供项目工具扩展使用。
结构:
metadata: Dictionary,保存项目层附加到当前合并策略的元数据。
方法¶
is_delete_record¶
- API:
public
检查记录是否带有删除标记。
参数:
| 名称 | 说明 |
|---|---|
record |
记录。 |
返回:带有删除标记时返回 true。
结构:
record: Dictionary,用于检查删除标记字段的配置记录。
make_record_key¶
- API:
public
根据记录生成稳定合并键。
参数:
| 名称 | 说明 |
|---|---|
record |
记录。 |
outer_key |
Dictionary 表外层 key。 |
返回:合并键,字段缺失时返回空字符串。
结构:
record: Dictionary,用于构建合并键的配置记录。outer_key: Variant,key_fields 为空时用于构建合并键的外层 key。
merge_record¶
- API:
public
合并两条记录。
参数:
| 名称 | 说明 |
|---|---|
base_record |
原始记录。 |
patch_record |
补丁记录。 |
返回:合并后的记录。
结构:
base_record: Dictionary,原始记录。patch_record: Dictionary,补丁记录。return: Dictionary,合并后的记录。
duplicate_policy¶
- API:
public
创建同内容拷贝。
返回:新合并策略。
describe¶
- API:
public
导出策略摘要。
返回:策略摘要字典。
结构:
return: Dictionary,包含 key_fields、update_mode、权限开关、删除标记设置、preserve_base_order 和 metadata。