Я пытаюсь создать звезду с заданным интервалом времени в 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);
}
}
помимо ниже проблемы, вы не должны использовать обновления на всех. Это просто 'Invoke' (или' InvokeRepeating') для таймеров в единстве – Fattie