Comparison: Why Switch to Signals?
Why replace the tools you already use (C# EventHandler, UnityEvent, or Action)?
| Feature | ❌ C# Action | ❌ C# EventHandler | ❌ UnityEvent | ✅ Signal |
|---|---|---|---|---|
| Exception Handling | Fails: If one listener crashes, the rest do not run. | Fails: If one listener crashes, the rest do not run. | Safe: Catches exceptions. | Safe: Logs errors, ensures all other listeners still run. |
| Threading | Unsafe: Crashes if UI is touched from a background thread. | Unsafe: Crashes if UI is touched from a background thread. | Unsafe: Must be called on Main Thread. | Auto-Sync: Can automatically marshal calls to the Main Thread. |
| Performance | Fast, but creates garbage on closure allocation. | Fast, but tons of EventArgs garbage. | Very slow (Reflection-based). | Fast: Zero-allocation invocation. |
| Debugging | Invisible: Can’t see listeners in Editor. | Invisible: Can’t see listeners in Editor. | Visible: But only if assigned in Editor, events registered in code are invisible. | Deep Profiling: View observer counts, heat-maps, and stats in Editor. |