跳转至

GFDerivedAttributeRule

API Reference / Domain / 类索引

  • 路径:addons/gf/extensions/domain/attributes/gf_derived_attribute_rule.gd
  • 模块:Domain
  • 继承:Resource
  • API:public
  • 类别:资源定义 (resource_definition)
  • 首次版本:3.17.0

通用派生属性规则。 通过权重或自定义回调从 GFAttributeSet 的其他属性计算目标属性,不规定属性业务含义。

成员概览

类型 名称 签名
常量 DEFAULT_MIN_VALUE const DEFAULT_MIN_VALUE: float = -1.0e20
常量 DEFAULT_MAX_VALUE const DEFAULT_MAX_VALUE: float = 1.0e20
属性 attribute_id var attribute_id: StringName = &""
属性 source_attribute_ids var source_attribute_ids: Array[StringName] = []
属性 source_weights var source_weights: Dictionary = {}
属性 flat_bonus var flat_bonus: float = 0.0
属性 min_value var min_value: float = DEFAULT_MIN_VALUE
属性 max_value var max_value: float = DEFAULT_MAX_VALUE
属性 sync_base_value var sync_base_value: bool = false
属性 compute_callback var compute_callback: Callable = Callable()
方法 calculate func calculate(attribute_set: Object) -> float:
方法 get_source_attribute_ids func get_source_attribute_ids() -> Array[StringName]:
方法 get_source_weight func get_source_weight(source_attribute_id: StringName) -> float:
方法 depends_on func depends_on(source_attribute_id: StringName) -> bool:
方法 duplicate_rule func duplicate_rule() -> GFDerivedAttributeRule:

常量

DEFAULT_MIN_VALUE

  • API:public
const DEFAULT_MIN_VALUE: float = -1.0e20

默认规则最小值。

DEFAULT_MAX_VALUE

  • API:public
const DEFAULT_MAX_VALUE: float = 1.0e20

默认规则最大值。

属性

attribute_id

  • API:public
var attribute_id: StringName = &""

被写入的目标属性 ID。

source_attribute_ids

  • API:public
var source_attribute_ids: Array[StringName] = []

参与计算的来源属性 ID。为空时使用 source_weights 的键。

结构:

  • source_attribute_ids: Array[StringName],参与当前派生规则计算的来源属性 ID 列表。

source_weights

  • API:public
var source_weights: Dictionary = {}

来源属性权重,键为属性 ID,值为数字权重。

结构:

  • source_weights: Dictionary,键为 StringName 或 String 属性 ID,值为 float 权重。

flat_bonus

  • API:public
var flat_bonus: float = 0.0

固定加值。

min_value

  • API:public
var min_value: float = DEFAULT_MIN_VALUE

规则级最小值。

max_value

  • API:public
var max_value: float = DEFAULT_MAX_VALUE

规则级最大值。

sync_base_value

  • API:public
var sync_base_value: bool = false

是否同步写入目标属性的 base 值。

compute_callback

  • API:public
var compute_callback: Callable = Callable()

自定义计算回调,建议签名为 func(attribute_set: GFAttributeSet, rule: GFDerivedAttributeRule) -> Variant。

方法

calculate

  • API:public
func calculate(attribute_set: Object) -> float:

计算派生属性值。

参数:

名称 说明
attribute_set 属性集合。

返回:计算后的数值。

get_source_attribute_ids

  • API:public
func get_source_attribute_ids() -> Array[StringName]:

获取来源属性 ID 列表。

返回:来源属性 ID 副本。

结构:

  • return: Array[StringName],当前规则实际使用的来源属性 ID 列表。

get_source_weight

  • API:public
func get_source_weight(source_attribute_id: StringName) -> float:

获取来源属性权重。

参数:

名称 说明
source_attribute_id 来源属性 ID。

返回:权重;未配置时返回 1。

depends_on

  • API:public
func depends_on(source_attribute_id: StringName) -> bool:

判断是否依赖指定属性。

参数:

名称 说明
source_attribute_id 来源属性 ID。

返回:依赖返回 true。

duplicate_rule

  • API:public
func duplicate_rule() -> GFDerivedAttributeRule:

创建当前规则的深拷贝。

返回:规则副本。