Desroy clone
MissingReferenceException: The object of type 'GameObject' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. UnityEngine.GameObject.GetComponent[test2] () (at C:/buildslave/unity/build/artifacts/generated/common/runtime/UnityEngineGameObject.gen.cs:35) Spawn.testik () (at Assets/lllll/Spawn.cs:48) blad.Update () (at Assets/lllll/blad.cs:55)
public class Spawn : MonoBehaviour {
public GameObject[] mob;
public Transform[] spwnPoint;
public int bla;
GameObject lol;
GameObject gop;
Transform pos;
public float Timer;
test2 t;
GameObject tlen;
private Transform target;
Transform gopa;
public float hp = 100;
blad bleat;
public GameObject lool;
void Awake () {
// Timer += Time.time + 5;
}
void Start(){
target = GameObject.FindGameObjectWithTag ("Player").transform;
bleat = lool.GetComponent<blad>();
}
void Update () {
for (int i = 0; i< bla; i++) {
if (Timer < Time.time) {
pos = spwnPoint[Random.Range(0,spwnPoint.Length)];
lol = mob[Random.Range(0,mob.Length)];
tlen = (GameObject) Instantiate(lol,pos.position,pos.rotation);
Timer += Time.time + 20;
}
}
//chlen = Instantiate(lol,pos.position,pos.rotation);
// chlen = Instantiate(lol,pos.position,pos.rotation);
}
public void testik()
{
t = tlen.GetComponent<test2> ();
t.hp = t.hp - bleat.damage;
if(t.hp<=0){
Destroy(GameObject.Find("bot(Clone)"));
}
}
}
Answer by Statement · Oct 11, 2015 at 04:43 PM
So tlen
is referencing a destroyed game object when it is being accessed in testik()
t = tlen.GetComponent<test2> ();
You have destroyed the object tlen
referenced, after it was instantiated in Update()
. I can't tell for sure where, but you are destroying bot(Clone).
If tlen
and bot(Clone) represent the same game object, the second call to testik()
would cause the error.
You could possibly fix the error by returning out of the function if tlen is not set.
public void testik()
{
if (!tlen)
return;
t = tlen.GetComponent<test2>();
t.hp = t.hp - bleat.damage;
if (t.hp <= 0)
Destroy(GameObject.Find("bot(Clone)"));
}
Tip: Consider using type and variable names that make sense. It makes it easier for people to understand.