- Home /
NullReferenceException error
Can anyone help me with this? I have the following code:
var dmg :int = 4;
var hp: int = 5;
var target: GameObject;
var creatureLocX = 0;
var creatureLocY = 0;
function OnGUI() {
var location : Vector3 = Camera.mainCamera.WorldToViewportPoint(target.position);
creatureLocX = location.x;
creatureLocY = location.y;
GUI.Label(Rect(creatureLocX,creatureLocY,120,60), "HP:" + hp + " DMG:" + dmg);
}
When I run the game I get the following message: "NullReferenceException: Object reference not set to an instance of an object" for the following line: "`var location : Vector3 = Camera.mainCamera.WorldToViewportPoint(target.position);`"
For target I've assigned an object in the inspector.
What can I do about this?
Answer by Statement · Dec 22, 2011 at 12:34 PM
Try using Camera.main.WorldToScreenPoint which return screen pixel coordinates. Camera.main.WorldToViewportPoint would return values between 0 to 1 in each axis.
Once you got the screen point, you can convert it to GUI space by flipping the y component since GUI has 0, 0 in upper left and screen point has 0, 0 in lower left.
Here's an example. To try it out, just put the script on any game object and text will appear on it.
var text : String = "Example";
function OnGUI() {
var g : Vector2 = WorldToGUIPoint(transform.position);
var r : Rect = Rect(g.x, g.y, 100, 20);
GUI.Label(r, text);
}
function WorldToGUIPoint(world : Vector3) : Vector2 {
var s : Vector3 = Camera.main.WorldToScreenPoint(world);
var g : Vector2 = Vector2(s.x, Screen.height - s.y);
return g;
}
Your answer
Follow this Question
Related Questions
Anyone Else wanna take a wack at the question ? Need help fixing a script error... 5 Answers
Object reference not set to an instance of an object? 1 Answer
NullReference Problem with pragma strict 1 Answer
How can i fix this weird error 2 Answers
Need a hand using array.Length in a C# editor script 1 Answer