Nach der Ausführung des Codes folgende Ausnahme am Ende des Codes aufgetreten, habe ich eine Menge Änderungen im Code, aber nichts ändert sich überhaupt.NullReferenceException: Objektreferenz nicht auf eine Instanz eines Objekts in C#
NullReferenceException: Object reference not set to an instance of an object RocketController.Start() (at Assets/Script/RocketController.cs:10)
Was ist die Ursache dieser Ausnahme?
using UnityEngine;
using System.Collections;
public class RocketController : MonoBehaviour {
// Use this for initialization
Rigidbody2D rd;
void Start() {
rd.GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update() {
if(Input.GetKey("right"))
{
rd.velocity = new Vector2(1,0);
}
else if(Input.GetKey("left"))
{
rd.velocity = new Vector2(-1,0);
}
else
{
rd.velocity = new Vector2(0,0);
}
}//close update
}
Ist 'rd' jemals instanziiert? Es scheint immer Null in Ihrem Code zu sein, also wird 'rd.anything' diese Ausnahme auslösen. – Andrew
Die Ironie des Kommentars '// Benutze dies zur Initialisierung' direkt über dem Problem. :) –
Sie haben sich getäuscht, wie GetComponent funktioniert, müssen Sie das vom Controller aufrufen und es dem Feld rd zuweisen, nicht aus dem Nullfeld anrufen – MikeT