Game Development Stack Exchange is a question and answer site for professional and independent game developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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 ?

share|improve this question
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();
share|improve this answer
hey 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

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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