我正在做这个游戏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,我可以运行游戏,但当我按下键时,我得到了一个错误,有人知道为什么吗?然后会发生什么?
发布于 2016-09-23 19:57:11
您应该使用Awake(),而不是awake()。在您的例子中,您使用的是一个“定制”函数,而不是Unity引擎使用的“官方”函数。
因此,引擎不能自己启动该函数,当在Update()中使用时,rb仍然为null。
示例:
void Awake() {
rb = GetComponent<Rigidbody> ();
}https://stackoverflow.com/questions/39660135
复制相似问题