1

我试图在 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);
    }

}
4

1 回答 1

4
public Star star;

应该

public GameObject star;
于 2016-05-29T19:06:02.207 回答