Skip to main content

Introduction

What is the EventDispatcher plugin?​

EventDispatcher is a lightweight global event system for Unreal Engine. It lets Blueprints and C++ classes communicate through events without holding direct references to each other.

Register a listener for an event in one place, for example a UMG Widget, and invoke the event from anywhere else: a GameMode, GameInstance, Level Blueprint, Actor or Component. The sender never needs to know who is listening.

Sender  →  Global Event ("MyEvent")  →  Listener(s)

Features​

  • Global events that can be invoked from anything with a world context (Actors, Components, Widgets, UObjects).
  • Blueprint and C++ support. Every function is a Blueprint node and a static C++ function.
  • Gameplay Tag events with any struct as payload, child-tag listening, handles and a Wait For Event async node. See Gameplay Tag Events.
  • Typed events: Simple (no data), Payload (any object), String, Int, Float, Bool, Vector, String + Float and String + Int. See Event Types.
  • Three ways to identify events: Gameplay Tags, Data Asset identifiers or plain names. See Identifiers vs. Names.
  • Targeted invokes that reach a single listener instead of everyone. See Targeting a Listener.
  • Automatic cleanup of listeners whose objects have been destroyed.

Common use cases​

UI and HUD updates, quest and inventory changes, game state changes, global notifications and any other communication between systems that should not reference each other directly.

Requirements​

Unreal Engine5.0 – 5.8 (versions up to 1.6.8 also support 4.27)
Target platformsWindows, Mac, Linux, Android, iOS (see the Fab listing for the full list)
NetworkingEvents are local to one game instance and are not replicated

Where to go next​

  1. Install the plugin
  2. Create an Event Identifier
  3. Register and invoke your first event
  4. Move on to Gameplay Tag Events
  5. Read Dispatching and Timing. Callbacks do not run immediately by default.