跳转至

GFDeferredMutationQueue

API Reference / Standard / 类索引

  • 路径:addons/gf/standard/common/gf_deferred_mutation_queue.gd
  • 模块:Standard
  • 继承:GFUtility
  • API:public
  • 类别:运行时服务 (runtime_service)
  • 首次版本:7.0.0

确定性延迟变更队列。 用于把运行时或工具流程中收集到的状态变更延迟到显式 playback 点执行。 队列只保存 Callable、排序信息和诊断 metadata,不解释调用方的实体、组件、 节点或资源语义。

成员概览

类型 名称 签名
常量 DEFAULT_PHASE const DEFAULT_PHASE: StringName = &"default"
属性 max_mutations_per_playback var max_mutations_per_playback: int = 0:
属性 max_seconds_per_playback var max_seconds_per_playback: float = 0.0:
方法 init func init() -> void:
方法 dispose func dispose() -> void:
方法 record func record(mutation: Callable, options: Dictionary = {}) -> int:
方法 record_owned func record_owned(owner: Object, mutation: Callable, options: Dictionary = {}) -> int:
方法 playback func playback(options: Dictionary = {}) -> Dictionary:
方法 preview func preview(options: Dictionary = {}) -> Array[Dictionary]:
方法 cancel func cancel(handle: int) -> bool:
方法 cancel_owner func cancel_owner(owner: Object) -> int:
方法 clear func clear() -> void:
方法 get_pending_count func get_pending_count() -> int:
方法 is_empty func is_empty() -> bool:
方法 get_debug_snapshot func get_debug_snapshot() -> Dictionary:

常量

DEFAULT_PHASE

  • API:public
  • 首次版本:7.0.0
const DEFAULT_PHASE: StringName = &"default"

默认变更阶段。

属性

max_mutations_per_playback

  • API:public
  • 首次版本:7.0.0
var max_mutations_per_playback: int = 0:

playback() 默认每次最多应用多少条变更;小于等于 0 时不限制数量。

max_seconds_per_playback

  • API:public
  • 首次版本:7.0.0
var max_seconds_per_playback: float = 0.0:

playback() 默认最多占用多少秒;小于等于 0 时不启用时间预算。

方法

init

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

初始化队列并清空统计。

dispose

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

清空队列。

record

  • API:public
  • 首次版本:7.0.0
func record(mutation: Callable, options: Dictionary = {}) -> int:

记录一条延迟变更。

参数:

名称 说明
mutation playback() 时执行的回调。
options 记录选项,支持 phase、sort_key、order、label、metadata 和 owner。

返回:变更句柄;mutation 无效时返回 0。

结构:

  • options: Dictionary,可包含 phase: StringName、sort_key: int、order: int、label: String、metadata: Dictionary、owner: Object。

record_owned

  • API:public
  • 首次版本:7.0.0
func record_owned(owner: Object, mutation: Callable, options: Dictionary = {}) -> int:

记录一条绑定 owner 的延迟变更。owner 释放后变更会在 playback() 时跳过。

参数:

名称 说明
owner 变更拥有者。
mutation playback() 时执行的回调。
options 记录选项,支持 phase、sort_key、order、label 和 metadata。

返回:变更句柄;参数无效时返回 0。

结构:

  • options: Dictionary,可包含 phase: StringName、sort_key: int、order: int、label: String、metadata: Dictionary。

playback

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

按 phase、sort_key、order 和记录句柄的稳定顺序应用延迟变更。

参数:

名称 说明
options playback 选项,支持 phase、max_count、max_seconds 和 include_records。

返回:应用报告。

结构:

  • options: Dictionary,可包含 phase: StringName、max_count: int、max_seconds: float、include_records: bool。
  • return: Dictionary,包含 applied_count、failed_count、skipped_owner_count、pending_count、budget_exhausted、phase 和可选 records。

preview

  • API:public
  • 首次版本:7.0.0
func preview(options: Dictionary = {}) -> Array[Dictionary]:

预览待应用变更,不执行回调。

参数:

名称 说明
options 预览选项,支持 phase 和 limit。

返回:待应用变更快照数组。

结构:

  • options: Dictionary,可包含 phase: StringName 和 limit: int。
  • return: Array[Dictionary],每个元素包含 handle、phase、sort_key、order、owner_id、label、metadata 和 recorded_msec。

cancel

  • API:public
  • 首次版本:7.0.0
func cancel(handle: int) -> bool:

取消一条尚未应用的变更。

参数:

名称 说明
handle record() 返回的变更句柄。

返回:找到并取消时返回 true。

cancel_owner

  • API:public
  • 首次版本:7.0.0
func cancel_owner(owner: Object) -> int:

取消指定 owner 绑定的全部待应用变更。

参数:

名称 说明
owner 变更拥有者。

返回:取消数量。

clear

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

清空全部待应用变更和统计。

get_pending_count

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

获取待应用变更数量。

返回:队列长度。

is_empty

  • API:public
  • 首次版本:7.0.0
func is_empty() -> bool:

检查队列是否为空。

返回:队列为空时返回 true。

get_debug_snapshot

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

获取队列调试快照。

返回:调试快照。

结构:

  • return: Dictionary,包含 pending_count、phase_counts、recorded_count、applied_count、cancelled_count、failed_count 和 skipped_owner_count。