Event Wiring Tools¶
Connect and disconnect UnityEvent persistent listeners. Wire UI buttons to methods, trigger events, and manage event callbacks without manual serialization.
wire_event¶
Connect a button, trigger, or other event to a method.
Parameters: - path (string) — Object with the event - component (string) — Component type owning the event field - event (string) — Serialized field name (e.g., "onClick", "_onComplete", "onTriggerEnter") - target (string) — Target scene path or asset path - method (string) — Method name (e.g., "SetActive", "Play", "TakeDamage") - arg_type (string, default="void") — "void" | "bool" | "int" | "float" | "string" | "object" - arg_value (string, optional) — Required when arg_type != void
Example:
# Connect button click
await wire_event(path="UI/StartButton", component="Button", event="onClick",
target="GameManager", method="StartGame")
# Connect trigger with damage argument
await wire_event(path="Spike", component="Collider", event="onTriggerEnter",
target="Player", method="TakeDamage", arg_type="int", arg_value="10")
# Connect UI event with string argument
await wire_event(path="UI/QuitButton", component="Button", event="onClick",
target="GameManager", method="QuitGame")
Common Patterns:
| Pattern | Example |
|---|---|
| Button → Activate/Deactivate | wire_event(path="Button", component="Button", event="onClick", target="Panel", method="SetActive", arg_type="bool", arg_value="true") |
| Trigger → Damage | wire_event(path="Spike", component="Collider", event="onTriggerEnter", target="Player", method="TakeDamage", arg_type="int", arg_value="10") |
| Input → Method Call | wire_event(path="Canvas/Input", component="InputField", event="onEndEdit", target="Handler", method="ProcessInput", arg_type="string", arg_value="...") |
| UI → Animation | wire_event(path="Button", component="Button", event="onClick", target="Character", method="PlayAnimation", arg_type="string", arg_value="Attack") |
unwire_event¶
Disconnect an event listener from a UnityEvent.
Parameters: - path (string) — Event source GameObject - component (string) — Component type owning the event field - event (string) — Serialized field name (e.g., "onClick") - index (int, optional) — Remove specific entry (0-based). Omit to clear all.
Example:
# Clear all listeners on onClick
await unwire_event(path="UI/Button", component="Button", event="onClick")
# Remove specific listener at index 0
await unwire_event(path="UI/Button", component="Button", event="onClick", index=0)
Workflow: Complete Event Setup¶
Scenario: Create a button that pauses the game on click.
-
Create UI
-
Wire to game controller
-
Verify connection
-
Test in play mode
-
If needed, clear listeners
Advanced Patterns¶
Multi-Listener Event Chain¶
# Wire multiple listeners to same event
await wire_event(path="Button", component="Button", event="onClick",
target="AudioManager", method="PlaySound",
arg_type="string", arg_value="click")
await wire_event(path="Button", component="Button", event="onClick",
target="UI", method="ShowMessage",
arg_type="string", arg_value="Button pressed!")
await wire_event(path="Button", component="Button", event="onClick",
target="Analytics", method="LogEvent",
arg_type="string", arg_value="button_clicked")
Conditional Wiring Based on State¶
# Check if already wired
comp = await get_component(path="Button", type="Button")
if "onClick" not in comp:
await wire_event(path="Button", component="Button", event="onClick",
target="Handler", method="OnClick")
Toggle Active State¶
# Button activates panel
await wire_event(path="OpenButton", component="Button", event="onClick",
target="MenuPanel", method="SetActive",
arg_type="bool", arg_value="true")
# Close button deactivates
await wire_event(path="CloseButton", component="Button", event="onClick",
target="MenuPanel", method="SetActive",
arg_type="bool", arg_value="false")
Common Errors & Solutions¶
| Error | Cause | Solution |
|---|---|---|
| "Method not found" | Typo or wrong component | Verify method name and component type match |
| "Target not found" | Wrong path | Use search_scene() to find target path |
| "Listener not added" | Event field name wrong | Check serialized field name (e.g., onClick, onValueChanged) |
| Multiple listeners | Wired same event twice | Use unwire_event() to clear first |
See also: Objects Tools for component management, UI Tools for creating UI elements, Scene Tools for editor control.