Hello everyone.
Quick question here, I want, when an envent is triggered, to be able in some way to retreive the insance of the object which triggered the event, from a class which catches that event.
So let’s say, for example that class Character triggers the event OnMove, but there are many instances of Character in the scene, so i want the class (let’s say) MovementManager, which is subscribed to Character.OnMove to know which was the character which actually moved when subscribing to that event.
Thank you very much
1 Answer
1
Ok, lazy me… Figured this out myself.
So for the class triggering the event, you should declare (I’ll use the example I posted in the original question so it’s easier to follow):
public delegate void CharacterEventHandler(GameObject e);
public static event CharacterEventHandler OnMove;
//And this when sending the event
public void SomeRandomMethod() {
OnMove(this);
}
Then, for the class registering to the event, make sure the method you subscribe to the event is declared like this:
//this method is subscribed to the event
void WhenCharacterMoves(GameObject character) {
//Here you can refer to the character which move with "character"
}
That’s it, too bad I didn’t look that up myself… Anyway, hope it helps someone
Thanks. This was a huge help. Can I ask where you found this information from? The documentation is so limited right now.
– Lukas_GMC@Lukas_GMC [MSDN][1] is always a good place to start for language related documentation. It contains the official documentation for the C# language. [1]: http://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx
– KiwasiSorry I was jumping back and forth between this and the new UnityEvent system. There is very limited docs related to UnityEvents. I finally got it working thanks to [this][1] thread. [1]: http://forum.unity3d.com/threads/assigning-functions-to-event-triggers-at-runtime.263468/
– Lukas_GMC