GUIContent array issues.

Hey guys, just a small issue with a GUIContent array.

It would seem that it doesn’t like to be re-sized. Here is my code:

	buttons.partyButtons = new GUIContent[skills.partySize[0]];

	for(var j : int; j < skills.partySize[0]; j++)
	   buttons.partyButtons[j].tooltip = currentParty[j].GetComponent(Info).fullName;

So I’m resizing it to the value in a different array then adding the names of things in another array to the tool tips of the GUIContent array. When I run this however I’m give this error.

NullReferenceException: Object reference not set to an instance of an object

That points to the line inside the for loop. If I remove the resizing of the array and re-size it manually it works no problem.

I found adding a yield between the re-size and the loop helped but only about 30% of the time.


Arrays can’t be resized- what you are doing there is creating an entirely new array and replacing the old one!

The problem is that by creating the array of GUIContents, all it does is create a number of ‘GUIContent’ shaped ‘holes’- not actual GUIContent objects. Assuming that you are going to change everything about the GUIContents, you need to use the line

buttons.partyButtons[j] = new GUIContent("someText", currentParty[j].GetComponent(Info).fullName);

instead. Remember to set the rest of the GUIContent at the same time, since all three of its members will be null.