2016-05-29 13 views
0

Ich versuche, einen Stern in einem bestimmten Zeitintervall in Unity zu spawnen. Aber ich möchte diese Sterne Eltern nicht mein Inspektor zu stören.Versuch, während der Update-Funktion setParent gibt Fehler

Aber wenn ich das versuche, gibt es "NullReferenceExeption: Objektreferenz nicht auf eine Instanz eines Objekts festgelegt."

Ich habe diese Art von Code an anderer Stelle erfolgreich, aber nicht innerhalb der Update-Funktion verwendet.

Der Code, den ich verwende, ist unten. Vielen Dank für Ihre Zeit und Hilfe im Voraus.

UPDATE:

I verwendet

Debug.Log (obj); 
Debug.Log (starParent); 

zu überprüfen, ob die Gameobjects vorhanden sind oder nicht. Es findet starParent aber nicht obj.

Das Problem ist, dass es Null für das GameObject zurückgibt, das es gerade instanziiert hat. Hat das etwas damit zu tun, dass es mit der Update-Funktion ist?

public class StarSpawner : MonoBehaviour { 

    public Star star; 
    private float spawnRate = 3f; 
    public static float time = 0; 
    private GameObject starParent; 

    void Start() { 
     if (!GameObject.Find ("StarParent")) { 
      new GameObject ("StarParent"); 
     } 

     starParent = GameObject.Find ("StarParent"); 
     SetNextStarTime(); 
    } 

    void Update() { 
     if (Time.timeSinceLevelLoad > time) { 
     Vector3 spawnPosition = new Vector3 (Random.Range (1f, 9f), 7); 
     GameObject obj = Instantiate (star, spawnPosition, Quaternion.identity) as GameObject; 
     obj.transform.SetParent (starParent.transform); 
     SetNextStar(); 
     } 
    } 

    void SetNextStarTime(){ 
     time = Time.timeSinceLevelLoad + spawnRate + Random.Range(0f, 5f); 
    } 

} 
+0

voneinander entfernt sein: Sie sollten nicht überhaupt mit einem Update. Es ist nur 'Invoke' (oder' InvokeRepeating') für Timer in Einheit – Fattie

Antwort

3
public Star star; 

sollte von dem Problem unter

public GameObject star; 
+0

Vielen Dank! Ich habe an dem falschen Ort nach meinem Fehler gesucht. – Mark

Verwandte Themen