跳转至

GFShaderParameterBinder

API Reference / Standard / 类索引

  • 路径:addons/gf/standard/utilities/display/gf_shader_parameter_binder.gd
  • 模块:Standard
  • 继承:Node
  • API:public
  • 类别:运行时句柄 (runtime_handle)
  • 首次版本:4.3.0

场景中的 Shader 参数 Profile 绑定节点。 将 GFShaderParameterProfile 应用到目标节点或材质,便于项目用可复用 Resource 管理 ShaderMaterial uniform 参数。它只负责目标解析、材质复制选项、 profile 变化监听和批量写入,不规定 shader、uniform 命名或视觉语义。

成员概览

类型 名称 签名
信号 profile_applied signal profile_applied(applied_count: int)
属性 profile var profile: GFShaderParameterProfile = null:
属性 target_path var target_path: NodePath = ^".."
属性 material_property var material_property: NodePath = ^"material"
属性 apply_on_ready var apply_on_ready: bool = true
属性 apply_each_process var apply_each_process: bool = false:
属性 auto_apply_on_profile_changed var auto_apply_on_profile_changed: bool = true
属性 duplicate_material_on_apply var duplicate_material_on_apply: bool = false
属性 require_declared_parameters var require_declared_parameters: bool = true
属性 warn_on_invalid_target var warn_on_invalid_target: bool = true
属性 warn_on_missing_parameters var warn_on_missing_parameters: bool = true
属性 copy_values var copy_values: bool = true
方法 apply func apply() -> int:
方法 resolve_target func resolve_target() -> Object:

信号

profile_applied

  • API:public
signal profile_applied(applied_count: int)

Profile 应用完成时发出。

参数:

名称 说明
applied_count 实际写入的参数数量。

属性

profile

  • API:public
var profile: GFShaderParameterProfile = null:

要应用的 Shader 参数 Profile。

target_path

  • API:public
var target_path: NodePath = ^".."

目标节点路径。默认指向父节点,适合把 Binder 作为材质节点的子节点使用。

material_property

  • API:public
var material_property: NodePath = ^"material"

当目标不是 ShaderMaterial 时,用于读取材质的属性路径。

apply_on_ready

  • API:public
var apply_on_ready: bool = true

进入场景树 ready 阶段时是否自动应用 profile。

apply_each_process

  • API:public
var apply_each_process: bool = false:

是否在每帧 _process() 中重新应用 profile。

auto_apply_on_profile_changed

  • API:public
var auto_apply_on_profile_changed: bool = true

Profile 通过公开方法发出 changed 信号时是否自动应用。

duplicate_material_on_apply

  • API:public
var duplicate_material_on_apply: bool = false

应用前是否复制目标材质并写回 material_property,避免修改共享材质资源。

require_declared_parameters

  • API:public
var require_declared_parameters: bool = true

是否要求 shader 已声明 profile 中的 uniform 参数。

warn_on_invalid_target

  • API:public
var warn_on_invalid_target: bool = true

目标或材质无效时是否输出 warning。

warn_on_missing_parameters

  • API:public
var warn_on_missing_parameters: bool = true

profile 中存在 shader 未声明参数时是否输出 warning。

copy_values

  • API:public
var copy_values: bool = true

写入参数前是否复制集合值,避免外部可变集合污染材质参数。

方法

apply

  • API:public
func apply() -> int:

将当前 profile 应用到目标材质。

返回:实际写入的参数数量。

resolve_target

  • API:public
func resolve_target() -> Object:

解析当前目标对象。

返回:目标节点;解析失败时返回 null。