Quick answer: Calling VisualEffect.SendEvent("OnHit") doesn’t spawn particles? The event name is misspelled, the VFX object is inactive, or the event isn’t wired to a Spawn context.
Hit feedback particles never appear despite firing the event. Event name is ‘OnHit’ in code but ‘onHit’ in the graph — case-sensitive mismatch.
Exact Name Match
Event names are case-sensitive. OnHit ≠ onHit. Add the event in the graph’s Spawn context, then send the same string from code.
Wire to Spawn Context
An Event input has to feed a Spawn context (Single Burst, Continuous Spawn, etc.). A floating Event node with no downstream connection eats sends silently.
Component Must Be Active
SendEvent on an inactive VisualEffect or disabled GameObject does nothing. Activate the object before sending. Pooled VFX systems must wake the GameObject first.
Use ExposedProperty for Perf
static ExposedProperty hitEvent = "OnHit";
vfx.SendEvent(hitEvent);Avoids re-hashing the string every call.
Verifying
SendEvent produces visible particles. Logging the call frequency matches gameplay events.
“VFX events need exact name, wired to a Spawn context, on an active component.”
Centralize event names in a static class — one source of truth, no typos when designers rename in the graph.