- Home /
NullReferenceException when trying to programatically populate cubes
I've been trying to build a 2d tile map generator, and I'm running into a "NullReferenceException: Object reference not set to an instance of an object" error. The problem is being pointed to here.
grass = (GameObject)Instantiate(Resources.Load("GrassPrefab"));
for (int i = 0; i < TestMap.map.getSize(0); i++) //error here
{
for (int j = 0; j < TestMap.map.getSize(1); j++)
{
if(TestMap.map[j, i] == 0)
{
Instantiate(grass, new Vector3(i, j, 10), Quaternion.identity);
}
}
}
I suspect that the problem is actually how my map loads from a file here:
enter code herevoid LoadMap()
{
sourceFile = new FileInfo("Assets/Resources/testmap.txt");
reader = sourceFile.OpenText();
while (true)
{
string[] split = reader.ReadLine().Split(new char[1] { ',' });
List<int> numbers = new List<int>();
int parsed;
foreach (string n in split)
if (int.TryParse(n, out parsed))
numbers.Add(parsed);
map.Add(numbers);
if (reader.EndOfStream)
break;
}
}
Are my suspicions true, am I loading the txt file wrong? (Located in Assets/Resources folder where my prefab is) Or do I have the wrong idea as to how a prefab works; do I need a list or array of GameObjects to load each one?
Edit: further information on TestMap.map:
TestMap.map is a 2d list as defined: public static Map2d map;
//Map2d:
public class Map2d<T>
{
List<List<T>> matrix;
public void Add(IEnumerable<T> row)
{
List<T> newRow = new List<T>(row);
matrix.Add(newRow);
}
public T this[int x, int y]
{
get { return matrix[y][x]; }
}
public int getSize(int x)
{
if(x == 0)
return matrix.Count;
else
return matrix[x].Count;
}
}
@DaveA I've edited the question to provide more information.
insert
Debug.Log(Test$$anonymous$$ap); Debug.Log(Test$$anonymous$$ap.map);
before line that raises error and post here what you got
Isn't it something around your resource loading process? Why don't you set up your "grassprefab" as a Transform field in your class? Then you would just have to Instantiate(grasseprefab) and no need to use Resource.Load anymore.
Your answer
![](https://koobas.hobune.stream/wayback/20220613075759im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
how to CORRECTLY load all assets (using Resources.LoadAll) 1 Answer
Distribute terrain in zones 3 Answers
Tower defense target update 0 Answers
Can you call a coroutine from a script on a prefab? 1 Answer