Quick answer: Add a Data Channel reader module to the consumer emitter’s Spawn or Update block. Both producer and consumer must reference the same Data Channel asset.
An impact system uses a Niagara Data Channel to broadcast hit positions to ambient particle systems. Producer writes succeed (the channel asset reports active producers). Consumer never spawns particles in response. Wiring looks correct but no events flow.
The Producer-Consumer Loop
Niagara Data Channels have three pieces:
- A Niagara Data Channel Asset defining the record struct (Position, Direction, Magnitude, etc.).
- One or more producers writing to the channel via a Data Channel Write module.
- One or more consumers reading from the channel via a Data Channel Reader module.
Both sides must reference the same asset. Mismatch (or unset reference) = silent drop.
Producer Setup
In the producer emitter’s Update or Particle Update:
Update Particle:
...
Write Niagara Data Channel:
Data Channel: NDC_Impact
Position: Particle.Position
Velocity: Particle.Velocity
Each frame each particle writes one record to the channel.
Consumer Setup
In the consumer emitter, add a reader. Two common patterns:
// Pattern A: Spawn particles per record
Spawn:
Spawn Particles from Niagara Data Channel:
Data Channel: NDC_Impact
Spawn Per Element: 5
// Pattern B: Read records, react in Update
Update:
Read Niagara Data Channel:
Data Channel: NDC_Impact
Both patterns need NDC_Impact to match the producer’s reference exactly.
Diagnose with Channel Inspector
Open the Niagara Data Channel asset. In the editor’s Channel Debug panel, you can see:
- Active producers count.
- Records written this frame.
- Active consumers count.
If producers > 0 but consumers = 0, the consumer isn’t bound. If both > 0 but records = 0, the producer isn’t actually writing — check its module conditions.
Lifetime Scope
Each Data Channel has a Scope (Frame, Cumulative). Frame-scoped channels clear at end of frame; records written this tick are read this tick only. Cumulative channels persist. For impact effects, Frame is usually right; for systemic state, Cumulative.
Verifying
Trigger producers (fire weapons, etc.). The consumer should spawn its particles in response. Channel Inspector should show non-zero producers, consumers, and records per frame.
“Data Channels are pub-sub. Both sides reference the same asset; both have the right module. No reader = silent drop.”
Data Channels replace many ad-hoc event hookups — great for systemic VFX where many systems should react to many sources.