- Home /
Event Trigger and Scripting, how to avoid duplicate initialization?
I have an UI Canvas with several objects. In some of them, I have added an Event Trigger component since I need to call certain functions when they are clicked. To do so, I have added that script in each of those objects, so the method "onClick(int)" I have defined inside that script, is visible for the Event Trigger component in each object.
Everything seemed to work fine this way, until I need to perform some initialization within such scripts. It seems the methods OnAwake and OnStart are called once for each object in which the script is. It is quite logical, since they are different instances, but the problem is how to solve this.
Is there any other place in which I could put such script just once and such that its methods are accessible to every object?
As a workaround, I am moving all the event related functions to another script that has no initialization code, so this script will call the real methods on the actual script by itself, but I think that it has to be a better solution there.
Answer by richyrich · Dec 23, 2014 at 12:04 AM
Arguably the simplest (though not necessarily the best) option would be to just include a static variable inside your interface script and set it to true once the initialisation had occurred once.
e.g.
//place this at the top of the class where you store other variables
static bool init = false;
void Start()
{
if(!init)
{
//Do stuff
//..
//init=true;
}
}
This is probably not the best way to implement, but it will work with negligible performance impact.
Alternatively, you could create a Singleton class and then store a reference to it as a variable to your main class. See also http://unitypatterns.com/singletons/
Let me know if I've completely misunderstood the question ;)
Your answer
Follow this Question
Related Questions
Hide/show UI Button and trigger the OnPointerDown event ?! 0 Answers
Can't fire a Custom Event on UI Button Touch OnClick 1 Answer
How would I detect a right click with an event trigger? 3 Answers
change the size (rect transform?) of a card (image) on scroll over like Hearthstone 0 Answers
Wait for user input in modal menu? 0 Answers