- Home /
Having a GameObject Get Destroyed Last
Hi all!
I haven't been able to find much about this. I have a GameObject that stores references to other game objects. Because I don't want to have to use GameObject.FindWithTag and GetComponent all the time, I instead access these references through properties. The one GameObject that stores the reference has a singleton. So then I can put properties such as:
private GameManager Manager
{
get { return ReferenceStoringObject.Instance.reference_needed; }
}
And access the references this way. I'm not sure about how good of a design that is, but I feel it beats slow GameObject.FindWithTag and GetComponent calls?
Anyway, the problem is that this reference storing object gets destroyed before some of the other ones, and this results in NullReferenceExceptions.
So... is there a way to ensure this object gets destroyed last, after the rest? Or is there a much better design approach that I'm completely missing (can't say I've been programming for too long)?
Thanks in advance!
Answer by taylank · Mar 22, 2014 at 03:59 AM
Have you considered using a static list instead? You can have a static list as a member in your monobehaviour (which means its contents will be the same for all instances of that behaviour) and use something like:
using System.Collections.Generic;
static List<MyScriptName> myRefList = new List<MyScriptName>();
void OnEnable() {
myRefList.Add(this);
}
void OnDisable() {
myRefList.Remove(this);
}
void Update() {
//so instead of findwithtag, you can do
foreach (MyScriptName myScriptInstance in myRefList) {
if (myScriptInstance.gameObject.tag == "Tag") {
Foo();
}
}
}
With this you won't have to worry about destroy order, because you will have access to myRefList as long as there is at least one instance of your behaviour script.
Your answer
Follow this Question
Related Questions
Distribute terrain in zones 3 Answers
Multiple Cars not working 1 Answer
[C#] Contructors, Polymorphism and Abstracting. 4 Answers
Problem with taking a gameobject from gameobject list to inventory. 1 Answer
Glow single Object 1 Answer