[Space Shooter Tutorial] NullReferenceException: Object reference not set to an instance of an object PlayerController.FixedUpdate ()

Hey Guys,

i’m completely new to unity and started a few days ago with the “Roll a Ball” tutorial. Now I’m stuck with the Space Shooter tutorial, I hope you can help. My problem is the following error:

NullReferenceException: Object reference not set to an instance of an object
PlayerController.FixedUpdate () (at Assets/Scripts/PlayerController.cs:31)

I’ve got plenty errors before, but were able to fix them, but this one is too hard for me. Here is my code:

using UnityEngine;
using System.Collections;


public class Boundary
{
	public float xMin, xMax, zMin, zMax;
}

public class PlayerController : MonoBehaviour
{
	public float speed;
	public float tilt;
	public Boundary boundary;
	public Rigidbody rb;
	
	void Start(){
		
		rb = GetComponent<Rigidbody> ();     //The new shape to push an information from Rigidbody. I think.
		
	}
	
	void FixedUpdate ()
	{
		float moveHorizontal = Input.GetAxis ("Horizontal");
		float moveVertical = Input.GetAxis ("Vertical");
		
		Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
		rb.velocity = movement * speed;
		
		rb.position = new Vector3 (
				Mathf.Clamp (rb.position.x, boundary.xMin, boundary.xMax), 
				0.0f, 
				Mathf.Clamp (rb.position.z, boundary.zMin, boundary.zMax)
			);
		
		rb.rotation = Quaternion.Euler (0.0f, 0.0f, rb.velocity.x * -tilt);
	}
}

I copied the code from the YouTube comments because it was the actual, working version of the older code used in the video, but my original code looked pretty much the same with a few exceptions.

Link to the video: Moving the Player - 05 - Space Shooter - Unity Official Tutorials - YouTube

I think your first mistake was taking the code from the Youtube comments section, whether they seem trustworthy or not. The second was probably being a beginner at programming.

I’m not sure if Unity is a good way to learn to program, without a decent IDE like VS 2015 its difficult to understand your code or debug it properly. In the past I did most of my Unity development by print statements because I was using MonoDevelop.

That said it takes a willing soul, and lots of patience and practice to learn.

Now on to your problem, I haven’t read all of your code but I can tell you that your error is one of the most common ones in the modern programming universe.

A null reference, ala NullReferenceException is when the code tries to access something which isn’t there. A little on the semantics of this exception: “null” means “nothing” “zero” or “naught” (this one’s british). Reference means to refer to something. An exception is a case where the code ran in to a technical problem that it cannot fix in its current state. You’ll run in to those a lot in programming, in fact Try…Catch blocks are meant to Catch and handle exceptions.

So a null reference exception is when the code tries to get something which doesn’t exist. Either you didn’t assign anything to a public variable in the Unity editor, haven’t created anything for it at all or yet in the code, or the variable you’re trying to access is just plain NULL.

Do something to remedy this. Find where you’ve done one of these things and fix it. I think you can do it. This may be tough language for a beginner to understand but given my explanation I think you can do it. Its always good to challenge oneself.