跳转至

GFDecisionContext

API Reference / Decision / 类索引

  • 路径:addons/gf/extensions/decision/runtime/gf_decision_context.gd
  • 模块:Decision
  • 继承:RefCounted
  • API:public
  • 类别:领域模型 (domain_model)
  • 首次版本:4.3.0

通用决策上下文。 组合黑板、主体、目标和元数据,供决策候选与考虑项读取状态。 该类型不持久化对象引用,也不定义任何具体游戏字段。

成员概览

类型 名称 签名
属性 blackboard var blackboard: GFDecisionBlackboard = null
属性 subject var subject: Object = null
属性 target var target: Object = null
属性 metadata var metadata: Dictionary = {}
方法 set_value func set_value(key: StringName, value: Variant) -> void:
方法 get_value func get_value(key: StringName, default_value: Variant = null) -> Variant:
方法 has_value func has_value(key: StringName) -> bool:
方法 set_metadata_value func set_metadata_value(key: StringName, value: Variant) -> void:
方法 get_metadata_value func get_metadata_value(key: StringName, default_value: Variant = null) -> Variant:
方法 get_subject_value func get_subject_value(key: StringName, fallback: Variant = null) -> Variant:
方法 get_target_value func get_target_value(key: StringName, fallback: Variant = null) -> Variant:
方法 duplicate_context func duplicate_context() -> GFDecisionContext:
方法 get_debug_snapshot func get_debug_snapshot() -> Dictionary:

属性

blackboard

  • API:public
var blackboard: GFDecisionBlackboard = null

决策黑板。

subject

  • API:public
var subject: Object = null

决策主体,例如当前 agent、系统或导演对象。

target

  • API:public
var target: Object = null

可选决策目标。

metadata

  • API:public
var metadata: Dictionary = {}

项目自定义上下文元数据。

结构:

  • metadata: Dictionary[StringName, Variant] project-defined decision metadata.

方法

set_value

  • API:public
func set_value(key: StringName, value: Variant) -> void:

设置黑板值。

参数:

名称 说明
key 值键。
value 要写入或修改的值。

结构:

  • value: 要写入黑板的任意项目值。

get_value

  • API:public
func get_value(key: StringName, default_value: Variant = null) -> Variant:

获取黑板值。

参数:

名称 说明
key 值键。
default_value 缺失时返回的默认值。

返回:黑板值或默认值。

结构:

  • default_value: 黑板缺失时返回的任意默认值。
  • return: 黑板中的项目值,或传入的 default_value。

has_value

  • API:public
func has_value(key: StringName) -> bool:

检查黑板值是否存在。

参数:

名称 说明
key 值键。

返回:存在返回 true。

set_metadata_value

  • API:public
func set_metadata_value(key: StringName, value: Variant) -> void:

设置元数据值。

参数:

名称 说明
key 元数据键。
value 元数据值。

结构:

  • value: 要写入元数据的任意项目值。

get_metadata_value

  • API:public
func get_metadata_value(key: StringName, default_value: Variant = null) -> Variant:

获取元数据值。

参数:

名称 说明
key 元数据键。
default_value 缺失时返回的默认值。

返回:元数据值或默认值。

结构:

  • default_value: 元数据缺失时返回的任意默认值。
  • return: 元数据中的项目值,或传入的 default_value。

get_subject_value

  • API:public
func get_subject_value(key: StringName, fallback: Variant = null) -> Variant:

从主体读取决策值。 优先调用主体的 get_decision_value(key, fallback),否则读取同名属性。

参数:

名称 说明
key 值键或属性名。
fallback 读取失败时的兜底值。

返回:主体值或兜底值。

结构:

  • fallback: 读取失败时返回的任意项目值。
  • return: 从主体读取的项目值,或传入的 fallback。

get_target_value

  • API:public
func get_target_value(key: StringName, fallback: Variant = null) -> Variant:

从目标读取决策值。 优先调用目标的 get_decision_value(key, fallback),否则读取同名属性。

参数:

名称 说明
key 值键或属性名。
fallback 读取失败时的兜底值。

返回:目标值或兜底值。

结构:

  • fallback: 读取失败时返回的任意项目值。
  • return: 从目标读取的项目值,或传入的 fallback。

duplicate_context

  • API:public
func duplicate_context() -> GFDecisionContext:

创建上下文副本。 默认复用 subject 与 target 对象引用,只复制黑板值和元数据。

返回:新上下文实例。

get_debug_snapshot

  • API:public
func get_debug_snapshot() -> Dictionary:

获取调试快照。

返回:调试快照字典。

结构:

  • return: 包含 blackboard、metadata、subject_class 和 target_class 字段的 Dictionary。