- Home /
OnGui function - Array is out of index question
Hi fellow Uniters, anyone have any idea why I keep getting an "Array is out of index" errors on the following line:
GUI.DrawTexture(playerHealthRect, lifeBarTexture[i], ScaleMode.ScaleToFit, true, 0.0f);
I got this code from another post. Thanks for the help. The complete code is below:
// LifeBar.cs - script to handle player and enemy lifebar
using UnityEngine;
using System.Collections;
public class LifeBar : MonoBehaviour
{
public Texture2D[] lifeBarTexture;
public int playerHealth = 10;
public int playerHealthTextureSize = 30;
void OnGUI ()
{
Rect playerHealthRect = new Rect(10, 5, playerHealthTextureSize, playerHealthTextureSize);
for (int i = 0; i < playerHealth; i++)
{
GUI.DrawTexture(playerHealthRect, lifeBarTexture[i], ScaleMode.ScaleToFit, true, 0.0f);
playerHealthRect.x += playerHealthTextureSize + 10;
}
}
void OnCollisionEnter (Collision collision)
{
if (collision.collider.tag == "enemy")
{
if (playerHealth -1 >= 0)
lifeBarTexture[playerHealth -1] = null;
playerHealth--;
}
}
}
Answer by cordinc · May 04, 2012 at 08:08 AM
This is because lifeBarTexture is uninitialised and thus is empty.
On the line that causes the error you are looking in the lifeBarTexture array at the i'th index, but because it is empty that entry is blank.
To fix this look at the GameObject that contains this script in the Inspector. There (under the LifeBar script component) you will see a "Life Bar Texture" field. Add Texture components to this field until it has the same number of entries as the "Player Health" field (defaults to 10, but could also be set in the Inspector).
Excellent, thank you Cordinc! Your suggestion fixed the bug.
Your answer
Follow this Question
Related Questions
array problem index out of range ? why ? 2 Answers
Array index is out of range and Raycast question 0 Answers
How to check if a c# 3d array index exists? 1 Answer
Array Index out of range (JavaScript) 1 Answer
Arrays rebels to my power! 1 Answer