Skip to content

Getting Started

Installation

  1. Download the precompiled version for your platform from the Releases page
  2. Extract to your Godot project's bin/ directory
  3. Enable the plugin in project settings

Verify Installation

Create a simple test script to verify installation:

gdscript
# Test.gd
extends Node

func _ready():
    # Check if SignalBus is available
    var bus = SignalBus.get_singleton()
    if bus:
        print("GDSignalBus installed successfully!")
        
        # Test basic functionality
        var subscription_id = bus.subscribe("test_signal", _on_test_signal)
        bus.emit("test_signal", ["Hello from SignalBus!"])
    else:
        print("GDSignalBus not properly installed")

func _on_test_signal(message):
    print("Received signal: ", message)

Basic Usage

Get SignalBus Instance

gdscript
# Get singleton
var bus = SignalBus.get_singleton()

Send Signals

gdscript
# Send simple signal
bus.emit("player_died", [])

# Send signal with parameters
bus.emit("item_collected", ["coin", 100])

# Send to specific channel
bus.emit_on_channel("ui", "button_clicked", ["start_button", "main"])

Listen to Signals

gdscript
# Subscribe to signals in _ready or appropriate place
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)

# Signal handler functions
func _on_player_died():
    print("Player died")
    get_tree().reload_current_scene()

func _on_item_collected(args):
    var item_type = args[0]
    var value = args[1]
    print("Collected item: ", item_type, " value: ", value)
    score += value

func _on_ui_event(args):
    var source = args[0]
    var context = args[1]
    print("Button clicked: ", source, " in ", context)

Disconnect

gdscript
# Save subscription ID for later cancellation
var subscription_id = bus.subscribe("player_died", _on_player_died)

# Disconnect specific signal
bus.unsubscribe(subscription_id)

# Auto cleanup when node is removed (recommended)
func _exit_tree():
    bus.unsubscribe_all(self)

Debug Features

gdscript
# Enable debug mode
bus.set_debug_enabled(true)

# Get system information
print("All signals: ", bus.get_signal_list())
print("All channels: ", bus.get_channel_list())
print("Subscriber count: ", bus.get_subscriber_count("player_died"))

Next Steps

Released under the MIT License