- Home /
Instantiate giving a NullReferenceError
Let me start by saying I'm new to Unity. I have a class that calls the SpawnFloor() function from the Spawner class. Because I'm not sure where the error is, I've posted the whole Spawner class below.
using UnityEngine;
using System.Collections;
public class Spawner : MonoBehaviour {
//Number of unique floors
static int NumberOfUniqueFloors = 4;
//List of floors
public GameObject[] FloorsArray = new GameObject[NumberOfUniqueFloors];
// Use this for initialization
void Start () {
//Add floors to list by tag
for (int i = 0; i < FloorsArray.Length; i++) {
FloorsArray[i] = GameObject.Find("Floor" + i);
}
}
void Update () {
}
public void SpawnFloor()
{
//Random number based on number of floors
int randomIndex = Random.Range(0, NumberOfUniqueFloors - 1);
//Instantiate a random floor
Transform theNewFloor;
theNewFloor = Instantiate(FloorsArray[randomIndex], new Vector3(0, 0, 0), Quaternion.identity) as Transform;
//Debug purposes
Debug.Log("SpawnFloor called");
}
}
The game runs fine until it goes to call the SpawnFloor() function in which case I get thousands of the following error:
NullReferenceException
UnityEngine.Object.Internal_InstantiateSingle (UnityEngine.Object data, Vector3 pos, Quaternion rot) (at C:/BuildAgent/work/7535de4ca26c26ac/Runtime/ExportGenerated/Editor/UnityEngineObject.cs:72)
UnityEngine.Object.Instantiate (UnityEngine.Object original, Vector3 position, Quaternion rotation) (at C:/BuildAgent/work/7535de4ca26c26ac/Runtime/ExportGenerated/Editor/UnityEngineObject.cs:82)
Spawner.SpawnFloor () (at Assets/Game 3 - Marble game/Scripts/Spawner.cs:31)
ScrollUp.Update () (at Assets/Game 3 - Marble game/Scripts/ScrollUp.cs:30)
This is my first time using Instantiate so I believe that's where I'm going wrong. I've tried quite a few suggestions I found on the internet and all produce the same error. Any help is greatly appreciated and may prevent any more internal bleeding from the slamming of my head on the desk. :)
Answer by Dave-Carlile · May 24, 2013 at 08:15 PM
In this code...
for (int i = 0; i < FloorsArray.Length; i++) {
FloorsArray[i] = GameObject.Find("Floor" + i);
Add a call to Debug.Log
and make sure it's actually finding gameobjects named Floor0
, Floor1
, Floor2
, etc.
I assume you actually have gameobjects that have been given those names?
Thanks for your help Dave Charlie! I put Debug.Log(FloorsArray[i]); and they all show null. The GameObjects themselves are not named Floor0, Floor1...etc. but they have tags called Floor1, Floor2...etc. How would you suggest I find the GameObjects? Thanks again!
Your answer
Follow this Question
Related Questions
Issue Instantiating prefab in C# 0 Answers
Issue Instantiating prefab in C# 2 Answers
Null Reference Exception 0 Answers
AddForce NullReferenceException 1 Answer
i want to assign different colors to rows or different colors to the brick? 0 Answers