Configuring Events in Code

Dynamic Listeners

You can easily register delegates to an event using the += operator like a standard C# delegate:

_MyEvent += SomeMethod;// Existing Method.
_MyEvent += () => ...;// Lambda Expression.

Normally this will register the delegate as a dynamic listener (non-serialized), however if you are currently in Edit Mode (in the Unity Editor but not in Play Mode) it will register as a persistent listener instead.

To specifically add a dynamic listener, you can either access the dynamicCalls field directly or use the static AddDynamicCall method which will automatically null-check the event:

_MyEvent.dynamicCalls += SomeMethod;
UltEvent.AddDynamicCall(ref _MyEvent, SomeMethod);

Configuring Persistent Listeners Using Code

To specifically add a persistent listener, you can either create a new PersistentCall and add it to the UltEventBase.PersistentCalls list or you can call UltEventBase.AddPersistentCall which returns a PersistentCall.

// Make the call yourself:
var call = new PersistentCall((Action<float>)SomeMethod);
_MyEvent.PersistentCalls.Add(call);

// Or let it be created for you:
var call = _MyEvent.AddPersistentCall((Action<float>)SomeMethod);

You can then configure the call using SetArguments or by accessing the PersistentArguments array directly.

call.SetArguments(2);
call.PersistentArguments[0].Float = 2;

All of these + operators and Add methods have corresponding - operators and Remove methods.