Hi All,
I am currently attempting to create a Game Object with a TextMesh component when a user moves their mouse over another Game Object, and have this Text Mesh display information on the Game Object that was moused over. Once the mouse is not over the Game Object, the text mesh is then deleted.
The problem that I am encountering is that when I attempt to edit the text of the newly create TextMesh, it returns this error:
NullReferenceException: Object reference not set to an instance of an object
StarGUI.OnMouseEnter () (at Assets/StarGUI.js:31)
UnityEngine.SendMouseEvents:DoSendMouseEvents(Int32, Int32)
Edit! I’ve discovered that this only occurs with most of the Game Objects that this StarGUI script is attached to (the stars, which the text mesh is supposed to show information on). I am completely unsure as to why it occurs with most stars, but with a few it works fine…
And here is all of the code in the “StarGUI” file referenced:
#pragma strict
var guiBox : GameObject;
var guiText1 : GameObject;
var guiTextBase : GameObject;
var systemData : GameObject;
var systemProperties : SystemProperties;
var thisStar : GameObject;
var thisStarSystem : StarSystem;
function Start ()
{
Debug.Log("HEY");
systemData = GameObject.Find("SystemData");
systemProperties = systemData.GetComponent("SystemProperties");
thisStar = gameObject;
}
function OnMouseEnter()
{
Debug.Log("OMGIMWORKING");
guiBox = GameObject.CreatePrimitive(PrimitiveType.Cube);
guiBox.name = "GUIBOX" + thisStar.name;
guiBox.transform.position = Vector3(thisStar.transform.position.x + 3 * transform.localScale.x,thisStar.transform.position.y,transform.position.z);
guiBox.transform.localScale = Vector3(thisStar.transform.localScale.x * 3,thisStar.transform.localScale.y * 4,thisStar.transform.localScale.z);
guiText1 = Instantiate(guiTextBase);
guiText1.name = "GUITEXTTHING";
guiText1.GetComponent(TextMesh).text = thisStarSystem.name + "
Part of " + thisStarSystem.group.name + "
" + thisStarSystem.numPlanets + " Planets";
guiText1.transform.position = guiBox.transform.position;
guiText1.transform.localScale = Vector3(guiBox.transform.localScale.x/10,guiBox.transform.localScale.y/15,0.1);
}
function OnMouseExit()
{
Destroy(guiText1);
Destroy(guiBox);
}
function Update ()
{
}
Does anyone know what the problem is, or at least the right direction to go in to solve it?
Thanks!