跳转至

GFResourceOverlay

API Reference / Standard / 类索引

  • 路径:addons/gf/standard/utilities/assets/gf_resource_overlay.gd
  • 模块:Standard
  • 继承:Resource
  • API:public
  • 类别:资源定义 (resource_definition)
  • 首次版本:7.0.0

通用资源覆盖链。 通过 base Resource 与一组 GFResourcePropertyPatch 构建资源变体。 覆盖链只关心属性差异和应用顺序,不绑定主题、材质、皮肤或项目目录策略。

成员概览

类型 名称 签名
属性 base_resource var base_resource: Resource = null
属性 patches var patches: Array = []
属性 metadata var metadata: Dictionary = {}
属性 duplicate_base_on_resolve var duplicate_base_on_resolve: bool = true
属性 require_existing_property var require_existing_property: bool = true
属性 copy_values var copy_values: bool = true
属性 duplicate_resources var duplicate_resources: bool = false
属性 skip_unchanged var skip_unchanged: bool = false
方法 configure func configure( p_base_resource: Resource, p_patches: Array = [], p_metadata: Dictionary = {} ) -> GFResourceOverlay:
方法 add_patch func add_patch(patch: GFResourcePropertyPatch) -> bool:
方法 clear_patches func clear_patches() -> void:
方法 resolve func resolve(options: Dictionary = {}) -> Dictionary:
方法 apply_to func apply_to(target: Object, options: Dictionary = {}) -> Dictionary:
方法 get_patch_count func get_patch_count() -> int:
方法 get_debug_snapshot func get_debug_snapshot() -> Dictionary:

属性

base_resource

  • API:public
  • 首次版本:7.0.0
var base_resource: Resource = null

覆盖链的来源资源。

patches

  • API:public
  • 首次版本:7.0.0
var patches: Array = []

按顺序应用的属性补丁列表。

结构:

  • patches: Array[GFResourcePropertyPatch],越靠后的补丁优先级越高。

metadata

  • API:public
  • 首次版本:7.0.0
var metadata: Dictionary = {}

调用方自定义元数据。GF 不解释该字段。

结构:

  • metadata: Dictionary[String, Variant],项目工具或编辑器 UI 自行读取的补充信息。

duplicate_base_on_resolve

  • API:public
  • 首次版本:7.0.0
var duplicate_base_on_resolve: bool = true

resolve() 时是否默认复制 base Resource 后再应用覆盖链。

require_existing_property

  • API:public
  • 首次版本:7.0.0
var require_existing_property: bool = true

应用覆盖链时是否默认要求目标对象已经声明对应属性。

copy_values

  • API:public
  • 首次版本:7.0.0
var copy_values: bool = true

写入目标前是否默认复制 Array、Dictionary 与 Resource 值。

duplicate_resources

  • API:public
  • 首次版本:7.0.0
var duplicate_resources: bool = false

复制值时是否默认复制 Resource 实例。

skip_unchanged

  • API:public
  • 首次版本:7.0.0
var skip_unchanged: bool = false

是否默认跳过和目标当前值相同的覆盖值。

方法

configure

  • API:public
  • 首次版本:7.0.0
func configure( p_base_resource: Resource, p_patches: Array = [], p_metadata: Dictionary = {} ) -> GFResourceOverlay:

配置覆盖链。

参数:

名称 说明
p_base_resource 来源资源。
p_patches 覆盖补丁列表。
p_metadata 调用方元数据。

返回:当前覆盖链实例。

结构:

  • p_patches: Array[GFResourcePropertyPatch] copied into patches.
  • p_metadata: Dictionary copied into metadata.

add_patch

  • API:public
  • 首次版本:7.0.0
func add_patch(patch: GFResourcePropertyPatch) -> bool:

追加一个属性补丁。

参数:

名称 说明
patch 要追加的补丁。

返回:追加成功返回 true。

clear_patches

  • API:public
  • 首次版本:7.0.0
func clear_patches() -> void:

清空覆盖补丁。

resolve

  • API:public
  • 首次版本:7.0.0
func resolve(options: Dictionary = {}) -> Dictionary:

解析覆盖链并返回资源构建报告。

参数:

名称 说明
options 解析选项。

返回:覆盖链构建报告,成功或部分成功时 resource 字段为结果资源。

结构:

  • options: Dictionary,支持 duplicate_base、require_existing_property、copy_values、duplicate_resources、skip_unchanged、include_patch_reports、stop_on_failure 与 metadata。
  • return: Dictionary,包含 ok、resource、patch_count、计数、路径、errors、patch_reports 和 metadata。

apply_to

  • API:public
  • 首次版本:7.0.0
func apply_to(target: Object, options: Dictionary = {}) -> Dictionary:

把覆盖链直接应用到现有对象。

参数:

名称 说明
target 目标对象。
options 应用选项。

返回:覆盖链应用报告。

结构:

  • options: Dictionary,支持 require_existing_property、copy_values、duplicate_resources、skip_unchanged、include_patch_reports、stop_on_failure 与 metadata。
  • return: Dictionary,包含 ok、patch_count、计数、路径、errors、patch_reports 和 metadata。

get_patch_count

  • API:public
  • 首次版本:7.0.0
func get_patch_count() -> int:

获取补丁数量。

返回:补丁数量。

get_debug_snapshot

  • API:public
  • 首次版本:7.0.0
func get_debug_snapshot() -> Dictionary:

获取调试快照。

返回:覆盖链调试快照。

结构:

  • return: Dictionary,包含 base_resource、base_resource_path、patch_count、patch_metadata、options 和 metadata。