我试图在 Unity 中以设定的时间间隔生成一颗星星。但我想养育这些明星,以免弄乱我的检查员。
但是当我尝试这样做时,它会给出“NullReferenceExeption:对象引用未设置为对象的实例”。
我之前在其他地方成功使用过这种类型的代码,但在更新函数中没有。
我使用的代码如下。提前感谢您的时间和帮助。
更新:
我用了
Debug.Log (obj);
Debug.Log (starParent);
检查游戏对象是否存在。它找到了starParent,但没有找到obj。
所以你的问题是它为它刚刚实例化的游戏对象返回 Null。这与更新功能有关吗?
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);
}
}