跳转至

访问器生成与编辑器工具

配置表 schema 可以用于生成静态访问器,也可以驱动编辑器里的资源表格和通用输入控件。生成和编辑工具都不改变 GFConfigProvider 协议。

静态访问器生成

如果项目希望减少散落的表名字符串,可以用 GFConfigAccessGenerator 根据 schema 生成静态访问器。生成结果只是对 provider 的 get_record()get_table() 的轻量访问封装,不把具体表结构写入框架:

var generator := GFConfigAccessGenerator.new()
generator.generate(
    [items_schema, levels_schema],
    "res://gf/generated/gf_config_access.gd",
    true,
    "GFConfigAccess",
    "Gf.get_utility(GFConfigProvider) as GFConfigProvider"
)

# 生成后项目代码可以通过 IDE 补全调用:
var item := GFConfigAccess.get_items_record(1001)
var levels := GFConfigAccess.get_levels_table()

生成器位于 kernel/editor,因此不会默认硬引用标准库的 GFConfigProvider。如果希望生成的访问器能在不显式传 provider 时工作,需要像上面这样传入项目自己的 provider_accessor。也可以在调用点显式传入 provider:GFConfigAccess.get_items_record(1001, provider)

访问器适合稳定表名、团队协作和重构检查;原始 GFConfigProvider 仍适合动态表名、热更新表包或项目自定义导表运行时。

生成器只读取 schema 的 table_nametable_key 属性,不调用项目自定义取表名方法,适合在编辑器批量生成时避开非 @tool 脚本副作用。生成器只输出 GDScript,可用 method_name_styleconstant_prefixrecord_method_patterntable_method_patterninclude_schema_comments 微调命名与注释,不生成其他语言代码。

编辑器工具

开发期如果需要做 Resource 批量检查或表格式编辑,可以复用 GFResourceTableEditorGFEditorValueField

GFResourceTableEditor 负责扫描 .tres / .res、从 Resource export 推导列、提交单元格值并广播变更。scan_resource_paths() 默认限制递归深度和收集数量,项目工具可按需要传入 max_scan_depth / max_resource_paths。默认只修改内存中的 Resource,不接管完整 UndoRedo 工作流;如果资源已有 resource_path 且项目希望提交后立即写盘,可以开启 auto_save_committed_resources 并监听 resource_save_failed

GFEditorValueField 负责按 Godot 属性类型创建基础输入控件。Array/Dictionary JSON 输入解析失败或容器类型不匹配时会发出 value_parse_failed 并保留旧值,不会把错误输入静默提交成空容器或错误容器。

这些编辑器工具是通用控件,不保存业务表结构,也不替项目决定资源分类、校验规则或提交工作流。