[ad_1]
As talked about within the feedback, for easy instances, this may be solved by shifting your earlier dependency up within the Script Execution Order settings.
One other manner is to make Occasion
a getter methodology that finds the reference within the scene if it hasn’t but been assigned, and initializes it on demand:
public summary class Singleton<T> : MonoBehaviour the place T :Singleton<T>
{
static T _instance;
public static T Occasion {
get {
if (_instance == null) {
_instance = FindAnyObjectByType<T>();
// Right here you may assert and
// log an error if the scene
// is lacking an occasion.
_instance.Init();
}
return _instance;
}
}
// Override this for any code that ought to
// run earlier than this object's first use.
digital void Init() {}
// This bit is optionally available. You'll be able to depart it out
// for lazy initialization on first use,
// or maintain it to all the time initialize on load.
void Awake() {
if (!Object.ReferenceEquals(_instance, this)
{
if (_instance != null) {
Destroy(this.gameObject);
} else {
_instance = (T)this;
Init();
}
}
}
}
This model searches the lively scene, however you may implement extra advanced logic within the getter for looking a number of scenes or establishing the occasion on demand if wanted.
[ad_2]