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. OnHitonHit. 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.