- Home /
NullReferenceException: Object reference not set to an instance of an object error?
Alright, I am currently instantiating a gameObject that will first figure out where the player position is. The following is my code.
var player : GameObject;
function Awake ()
{
player = GameObject.Find("First Person Controller");
}
function Update ()
{
var target : Vector3 = player.position;
}
When I hit run I keep getting the error "NullReferenceException: Object reference not set to an instance of an object error". It is also referring to the line var target :....
I am not sure why this is happening I am sure it is something stupid but I cannot just figure it out for the past couple of hours. In the inspector it shows that after instantiating the first person controller is there but the gameObject does not to do any of the things I need it to do.
Any help is appreciated, thank you very much.
Answer by perchik · Aug 26, 2013 at 04:39 PM
Your error message means that you are trying to access an object that does not exist. The line you've referred to (line 11 in your post) is the culprit.
Therefore, on that line, you're only trying to access one object - player
. This should tell you that player
does not exist in this context.
So then you should look to see where player is created/assigned, which happens in your Start function. If you put in a debug statement after you find the player:
Debug.Log("player name is " + player.name);
that should print out the name of the GameObject that was found and assigned.
Unfortunately, that will probably throw an error too, which should suggest to you that you never actually found the player object.
Because of that, you would then need to check to see if you actually have a game object named "First Person Controller"
At which point, you'd realize either that you don't OR that it's name is actually FirstPersonController, in which case you're searching for the wrong name.
Thanks for your comment, but I had the name "First Person Controller" in my scene and should work fine. Anyways Im searching now for the gameobject with tag but I still get the same error! Heres my code:
var player : GameObject;
function Awake ()
{
player = GameObject.FindWithTag("player");
print(player.tag);
}
function Update ()
{
var target : Vector3 = player.position;
}
And I actually do get "player" as output in the unity console. It is also weird that I used the exact same method on another prefab with a different gameObject and it worked. This one is just trying to frustrate me. I hope you have any more ideas of what could be the problem. Thanks again for your comment.
Oh. It's because player doesn't have a position. It has a transform which has a position.
var target : Vector3 = player.transform.position;