NullReferenceException Fire Ball

时间:2016-09-23 11:53:12

标签: c#-4.0 unity3d

我正在开发这款游戏breakout-game

我正试图让球发射并与墙壁碰撞弹跳,为此我做了他说的话,我添加了一个脚本并输入了这段代码:

public class BallMove : MonoBehaviour {


private Rigidbody rb;
public float ballVelocity = 800f;

private bool isMove; 
// Use this for initialization
void awake() {
    rb = GetComponent<Rigidbody> ();
}

// Update is called once per frame
void Update () {

    if (Input.GetButtonDown ("Fire1") && isMove == false) {
        transform.parent = null;
        isMove = true;
        rb.isKinematic = false;
        rb.AddForce (new Vector3(ballVelocity,ballVelocity,0));
    }
}

}

我理解这段代码的每一行,但是当我尝试玩这个时,我得到了一个nullReferenceException,我可以运行游戏但是当我按下键时我得到一个错误,有人知道为什么吗?会发生什么?

1 个答案:

答案 0 :(得分:2)

您应该使用Awake(),而不是awake()。在您的情况下,您正在使用&#34;自定义&#34;功能,而不是&#34;官方&#34;一个Unity引擎使用的。

因此,引擎无法自行启动该功能,rbUpdate()中使用时void Awake() { rb = GetComponent<Rigidbody> (); } 仍然为空。

示例:

{{1}}