跳转至

GFSignalConnection

API Reference / Standard / 类索引

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

可管理的 Godot Signal 链式连接。 连接支持默认参数、过滤、映射、延迟、防抖、节流、次数限制、 累积转换、一次性触发和 owner 归属清理。

成员概览

类型 名称 签名
枚举 OperationType enum OperationType
方法 filter func filter(predicate: Callable) -> GFSignalConnection:
方法 map func map(mapper: Callable) -> GFSignalConnection:
方法 delay func delay(seconds: float) -> GFSignalConnection:
方法 debounce func debounce(seconds: float) -> GFSignalConnection:
方法 throttle func throttle(seconds: float) -> GFSignalConnection:
方法 skip func skip(count: int) -> GFSignalConnection:
方法 take func take(count: int) -> GFSignalConnection:
方法 first func first() -> GFSignalConnection:
方法 scan func scan(accumulator: Variant, reducer: Callable) -> GFSignalConnection:
方法 start_with func start_with(value: Variant) -> GFSignalConnection:
方法 once func once() -> GFSignalConnection:
方法 start func start() -> GFSignalConnection:
方法 disconnect_signal func disconnect_signal() -> void:
方法 is_active func is_active() -> bool:
方法 is_owned_by func is_owned_by(owner: Object) -> bool:
方法 matches func matches(source_signal: Signal, callback: Callable, owner: Object = null) -> bool:
方法 prune_if_invalid func prune_if_invalid() -> bool:

枚举

OperationType

  • API:public
enum OperationType { ## 过滤信号参数。 FILTER, ## 映射信号参数。 MAP, ## 延迟处理。 DELAY, ## 防抖处理。 DEBOUNCE, ## 节流处理。 THROTTLE, ## 跳过前若干次触发。 SKIP, ## 只接收前若干次触发。 TAKE, ## 累积转换信号参数。 SCAN, }

链式连接处理步骤类型。

方法

filter

  • API:public
func filter(predicate: Callable) -> GFSignalConnection:

增加过滤步骤。predicate 返回 false 时停止本次回调。

参数:

名称 说明
predicate 用于过滤信号参数的回调。

返回:当前连接对象,便于继续链式配置。

map

  • API:public
func map(mapper: Callable) -> GFSignalConnection:

增加映射步骤。mapper 的返回值会替换后续回调参数。

参数:

名称 说明
mapper 用于转换信号参数的回调。

返回:当前连接对象,便于继续链式配置。

delay

  • API:public
func delay(seconds: float) -> GFSignalConnection:

每次触发都延迟指定秒数后再继续处理。

参数:

名称 说明
seconds 延迟时间(秒)。

返回:当前连接对象,便于继续链式配置。

debounce

  • API:public
func debounce(seconds: float) -> GFSignalConnection:

防抖处理。连续触发时只保留静默期后的最后一次。

参数:

名称 说明
seconds 防抖静默期(秒)。

返回:当前连接对象,便于继续链式配置。

throttle

  • API:public
func throttle(seconds: float) -> GFSignalConnection:

节流处理。指定秒数内只允许首次触发继续传递。

参数:

名称 说明
seconds 节流时间(秒)。

返回:当前连接对象,便于继续链式配置。

skip

  • API:public
func skip(count: int) -> GFSignalConnection:

跳过前 count 次成功进入该步骤的触发。

参数:

名称 说明
count 需要跳过的次数。

返回:当前连接对象,便于继续链式配置。

take

  • API:public
func take(count: int) -> GFSignalConnection:

只允许前 count 次成功进入该步骤的触发继续传递,耗尽后自动断开。

参数:

名称 说明
count 允许传递的次数。

返回:当前连接对象,便于继续链式配置。

first

  • API:public
func first() -> GFSignalConnection:

只允许第一次成功进入该步骤的触发继续传递,之后自动断开。

返回:当前连接对象,便于继续链式配置。

scan

  • API:public
func scan(accumulator: Variant, reducer: Callable) -> GFSignalConnection:

对信号参数执行累积转换。reducer 第一个参数为当前累积值,后续参数为当前信号参数。

参数:

名称 说明
accumulator 初始累积值。
reducer 累积转换回调。

返回:当前连接对象,便于继续链式配置。

结构:

  • accumulator: Variant,传给 reducer 的初始累加器。

start_with

  • API:public
func start_with(value: Variant) -> GFSignalConnection:

立即用指定参数主动执行一次链式处理。

参数:

名称 说明
value 初始参数;Array 会按参数列表传入,Callable 会被调用并使用其返回值。

返回:当前连接对象,便于继续链式配置。

结构:

  • value: Variant,起始值、参数 Array,或返回这两类形态的 Callable。

once

  • API:public
func once() -> GFSignalConnection:

设置为一次性连接,首次成功触发后自动断开。

返回:当前连接对象,便于继续链式配置。

start

  • API:public
func start() -> GFSignalConnection:

启动连接。

返回:当前连接对象。

disconnect_signal

  • API:public
func disconnect_signal() -> void:

主动断开连接。

is_active

  • API:public
func is_active() -> bool:

当前连接是否仍有效。

返回:当前连接仍处于连接状态时返回 true。

is_owned_by

  • API:public
func is_owned_by(owner: Object) -> bool:

当前连接是否属于指定 owner。

参数:

名称 说明
owner 监听或连接的拥有者。

返回:owner 匹配时返回 true。

matches

  • API:public
func matches(source_signal: Signal, callback: Callable, owner: Object = null) -> bool:

检查连接是否匹配指定 Signal、回调和可选 owner。

参数:

名称 说明
source_signal 要连接或断开的 Godot 信号。
callback 操作完成或事件触发时执行的回调。
owner 监听或连接的拥有者。

返回:Signal、回调和 owner 匹配时返回 true。

prune_if_invalid

  • API:public
func prune_if_invalid() -> bool:

owner、signal 发射源或 callback 目标失效时清理连接。

返回:连接已被判定无效并清理时返回 true。