2016-05-29 6 views
0

Я пытаюсь создать звезду с заданным интервалом времени в Unity. Но я бы хотел, чтобы эти звезды не загромождали моего инспектора.Пытаться установитьПарент во время функции обновления дает ошибку

Но когда я пытаюсь это сделать, он дает «NullReferenceExeption: ссылка на объект не установлена ​​в экземпляр объекта».

Я использовал этот тип кода в другом месте успешно, но не в функции обновления.

Код, который я использую, приведен ниже. Спасибо за ваше время и помощь заранее.

UPDATE:

Я использовал

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

, чтобы проверить, если GameObjects существует или нет. Он находит starParent, но не obj.

Итак, проблема заключается в том, что он возвращает Null для GameObject, который он только что создавал. Связано ли это с функцией Update?

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

помимо ниже проблемы, вы не должны использовать обновления на всех. Это просто 'Invoke' (или' InvokeRepeating') для таймеров в единстве – Fattie

ответ

3
public Star star; 

должен быть

public GameObject star; 
+0

Спасибо вам большое! Я искал неправильное место для своей ошибки. – Mark