Skip to content

快速开始

安装

从预编译版本安装(推荐)

  1. Releases 页面下载适合你平台的预编译版本
  2. 解压到你的 Godot 项目的 bin/ 目录下
  3. 在项目设置中启用插件

验证安装

创建一个简单的测试脚本来验证安装:

gdscript
# Test.gd
extends Node

func _ready():
    # 检查 SignalBus 是否可用
    var bus = SignalBus.get_singleton()
    if bus:
        print("GDSignalBus 安装成功!")
        
        # 测试基本功能
        var subscription_id = bus.subscribe("test_signal", _on_test_signal)
        bus.emit("test_signal", ["Hello from SignalBus!"])
    else:
        print("GDSignalBus 未正确安装")

func _on_test_signal(message):
    print("收到信号: ", message)

基础使用

获取 SignalBus 实例

gdscript
# 获取单例
var bus = SignalBus.get_singleton()

发送信号

gdscript
# 发送简单信号
bus.emit("player_died", [])

# 发送带参数的信号
bus.emit("item_collected", ["coin", 100])

# 发送到特定通道
bus.emit_on_channel("ui", "button_clicked", ["start_button", "main"])

监听信号

gdscript
# 在 _ready 或适当的地方订阅信号
func _ready():
    bus.subscribe("player_died", _on_player_died)
    bus.subscribe("item_collected", _on_item_collected)
    bus.subscribe_on_channel("ui", "button_clicked", _on_ui_event)

# 信号处理函数
func _on_player_died():
    print("玩家死亡")
    get_tree().reload_current_scene()

func _on_item_collected(args):
    var item_type = args[0]
    var value = args[1]
    print("收集物品: ", item_type, " 价值: ", value)
    score += value

func _on_ui_event(args):
    var source = args[0]
    var context = args[1]
    print("按钮点击: ", source, " 在 ", context)

断开连接

gdscript
# 保存订阅ID以便后续取消
var subscription_id = bus.subscribe("player_died", _on_player_died)

# 断开特定信号
bus.unsubscribe(subscription_id)

# 在节点被移除时自动清理(推荐)
func _exit_tree():
    bus.unsubscribe_all(self)

调试功能

gdscript
# 启用调试模式
bus.set_debug_enabled(true)

# 获取系统信息
print("所有信号: ", bus.get_signal_list())
print("所有频道: ", bus.get_channel_list())
print("订阅者数量: ", bus.get_subscriber_count("player_died"))

下一步

基于 MIT 许可发布