2016-09-23 7 views
0

Ich bin auf dieses Spiel arbeiten breakout-gameNullreferenceexception Fire Ball

und ich versuche, den Ball Feuer zu machen und kollidieren mit der Wand Prellen, zu tun, dass ich tat, was er sagte, habe ich ein Skript und setzen verstehen

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)); 
    } 
} 

}

ich jede Zeile dieses Codes, aber wenn ich versuche, dies zu spielen, ich habe eine Nullreferenceexception, ich kann das Spiel laufen, aber wenn ich die Taste drücken, ich bin: dieser Code einen Fehler bekommen, jemand weiß warum? und was passiert?

Antwort

2

Sie sollten Awake(), nicht awake() verwenden. In Ihrem Fall verwenden Sie eine "angepasste" Funktion und nicht die "offizielle", die von der Unity-Engine verwendet wird.

So kann die Engine diese Funktion nicht von selbst starten, und rb bleibt null, wenn sie in der Update() verwendet wird.

Beispiel:

void Awake() { 
    rb = GetComponent<Rigidbody>(); 
} 
+1

Beat me von 2 Sekunden, das ist die Antwort gegeben, dass die Gameobject hat auch einen Starrkörper angebracht –

+1

@ParadoxForge: nice Fang! Ja, es ist ein typischer Fehler von Leuten, die versuchen, Einheit zu lernen. Groß-/Kleinschreibung wird oft ignoriert :-) –