I have made a class including variables in Monodevelop which is:

public class GridInfo : MonoBehaviour {

    public float initPosX;
    public float initPosY;
    public bool inUse;
    public int f;
    public int g;
    public int h;
    public GridInfo parent;
    public int  y,x;        
}

Now I am using its class variable in another class, Map.cs which is:

public class Map : MonoBehaviour {

    public static GridInfo[,] Tile = new GridInfo[17, 23];

    void Start() {

        Tile[0,0].initPosX = initPosX;  //Line 49
    }
}

I am not getting any error on runtime, but when I play in unity it is giving me error

NullReferenceException: Object reference not set to an instance of an object
Map.Start () (at Assets/Scripts/Map.cs:49)

I am not inserting this script in any gameobject, as Map.cs will make a GridInfo type array, I have also tried using variables using GetComponent, where is the problem ?

link|improve this question

56% accept rate
feedback

1 Answer

up vote 4 down vote accepted

I dont understand Unity and MonoDevelop, bud I think, you don't have objects in array intialized. You created array, but objects in it are null. You have to call new GridInfo on each of them.

Somethink like:

foreach (GridInfo gi in Tile) // I now don't know, if this goes over 2D array too
{
   gi = new Grid();
}
link|improve this answer
hey thnx..it wrking nw.. – Syed Nov 22 '11 at 9:54
To be precise, foreach won't work in this case because C# doesn't allow assignments to the iteration variable. A for( ; ; ) loop or other means is needed instead. – DuckMaestro Nov 22 '11 at 23:27
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.