- Home /
This question was
closed Jan 06, 2015 at 12:30 PM by
Graham-Dunnett for the following reason:
Duplicate Question
Question by
shaun-meyer25 · Jan 06, 2015 at 12:28 PM ·
nullreferenceexceptionclickobject-reference-not-set
Upon clicking: Object reference not set to an instance of an object
Hello,
In a tower defense game, I created a healthbar that would float above my enemy objects, using some rectangles with OnGUI(). Everything works as I would expect, except for the fact that when I click anywhere on the screen while it is running, I get an influx of this error:
NullReferenceException: Object reference not set to an instance of an object, Healthbar.OnGUI() (at Healthbar.cs:19)
It seems bizarre to me. I have objects assigned to both of the public fields (the textures), and I don't even have any functionality programmed in that would react to clicking in any way. Is there some sort of hidden click functionality while in-game in Unity that I am unaware of?
My healthbar code:
using UnityEngine;
using System.Collections;
public class Healthbar : MonoBehaviour {
public Texture2D bgTexture;
public Texture2D healthbarTexture;
private GUIStyle healthStyle;
private Vector2 size = new Vector2(32,8);
private int rawPercent = 100;
void Start () {
healthStyle = new GUIStyle();
healthStyle.border = new RectOffset(2,2,2,2);
}
void OnGUI() {
Vector3 pos =
Camera.current.WorldToScreenPoint(transform.position);
pos.y = Screen.height - (pos.y + 1);
GUI.BeginGroup(new Rect(pos.x - 4, pos.y, size.x, size.y));
GUI.Box(new Rect(0,0, size.x, size.y), bgTexture, healthStyle);
float truePercent = rawPercent / 100f;
GUI.BeginGroup(new Rect(0,0, (float)size.x * truePercent, size.y));
GUI.Box(new Rect(0,0, size.x, size.y), healthbarTexture, healthStyle);
GUI.EndGroup();
GUI.EndGroup();
}
public void AdjustHealth(int damage) {
rawPercent -= damage;
}
}
Comment