- Home /
Sharing delegate types across scripts
I'm starting to use events and delegates in my script and realised that if I want different scripts to fire different events, I need to declare a delegate type within that script as I'm not really able to use previously declared types in other scripts.
I thought at first that if I wanted to do that I'd need to have a reference to the script that declared the delegate type, have the delegate access type as public and I would need to go Script.DelegateName but it seems that declaring them just public is enough and I can simply use Script.DelegateName without having a reference to the script - as if the delegate type is static or something.
Can someone explain what is going on here - why am I able to do this, does this actually work, is there anything wrong with it, etc?
Answer by Chris_Dlala · May 26, 2014 at 03:21 PM
We use Events and delegates all the time. They are a brilliant way of decoupling scripts/components. Generally speaking, if an event is specific to a script/component I declare the delegate as public within that type. If not, I will declare them in a C# file under a relevant namespace and still public, for example a general UI delegate for being selected could be found in Core.UI.Events
. This allows any number of UI scripts to be present and only rely on one Events source file. In a similar way any UI script can be removed. The MSDN example also moves event handlers outside the class declaration. An event handler is basically a structure for a method that an event can call.
Your answer
Follow this Question
Related Questions
How can an editor script know when another script was removed from the project? 1 Answer
Adding single Event listener to multiple ui buttons via scripting 1 Answer
Why is this check executing twice? 2 Answers
How to unsubscribe from InputSystem event properly 0 Answers
Button onClick delegate with toggling method assignment 0 Answers