J'essaye de générer une étoile à un intervalle de temps défini dans Unity. Mais je voudrais parent ces étoiles pour ne pas encombrer mon inspecteur.Essayer de définirParent pendant la fonction de mise à jour donne une erreur
Mais quand j'essaye de faire ceci il donne "NullReferenceException: Référence d'objet non définie à une instance d'un objet."
J'ai déjà utilisé ce type de code avec succès auparavant mais pas dans la fonction de mise à jour.
Le code que j'utilise est ci-dessous. Merci pour votre temps et aide à l'avance.
MISE À JOUR:
I utilisé
Debug.Log (obj);
Debug.Log (starParent);
pour vérifier si les GameObjects existent ou non. Il trouve starParent mais pas obj.
Donc, le problème est qu'il retourne Null pour le GameObject juste instancié. Cela a-t-il quelque chose à voir avec la fonction de mise à jour?
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);
}
}
à part le problème ci-dessous: vous ne devriez pas utiliser Mise à jour du tout. C'est juste 'Invoke' (ou' InvokeRepeating') pour les timers dans l'unité – Fattie