- Home /
'Awake' not called first after scripts are recompiled during execution
I have an 'awake' function which sets up an instance, like so:
public static instance MySingleton
{
get;
private set;
}
void Awake()
{
Instance = this;
}
This works fine, no problems.
However if I change a script during run time and unity does its recompilation 'Awake' isn't called on 'MySingleton' and another script from its normal update routine attempts to access it causing a null reference exception...
Any idea how I could make sure 'awake' is called straight after a script is recompiled or does Unity not provide a way to handle this?
you can stop the execution and run it again. what is the problem in it?
the problem is I'd like to be able to take advantage of Unity's ability to dynamically compile scripts at run time.
Dynamic compilation is broken. In my experience it always raise some exception.
Answer by Berenger · May 16, 2012 at 03:21 PM
Dynamic compilation isn't really a good idea, but that code is dangerous anyway. You should call an Init function both in get and Awake if the instance is null, that way it's initialize not matter which one is called first.
I added a simple way to have singleton with monobehaviour to the wiki if you're interested.
ah yes that code works perfectly, thank you so much for taking the time to put it in the wiki!
Your answer
Follow this Question
Related Questions
Is it costly to get a singleton instance each frame ? 1 Answer
Would setting this static cause a memory leak? 1 Answer
Singleton instance accessed in coroutine always null 1 Answer
Awake Method Called Twice 1 Answer
singleton becomes null? 0 Answers