Spawn array error
Hello Im trying to spawn obstacles on my game but im having an array error i can't understand
Im new to unit. So i already created obstacles and put it on my prefabs folder.
error: IndexOutOfRangeException: Array index is out of range. Spawner+c__Iterator0.MoveNext () (at Assets/Scripts/Spawner.cs:25)
Code:
using UnityEngine;
using System.Collections;
public class Spawner : MonoBehaviour
{
public GameObject [] prefabs;
public float delay = 2.0f; // Delay on spawn
public bool active = true; // Define to cancel the spawn when the game is over
// Use this for initialization
void Start ()
{
StartCoroutine (ObstacleGenerator ());
}
IEnumerator ObstacleGenerator()
{
yield return new WaitForSeconds (delay);
if (active)
{
var newTransform = transform;
Instantiate(prefabs[Random.Range(0, prefabs.Length)], newTransform.position, Quaternion.identity);
}
StartCoroutine (ObstacleGenerator ());
}
}
Thank you
Answer by Gilles_aerts · Oct 06, 2015 at 05:44 PM
If the index is out of range it simply means that the script tries to acces a part of the array that doesn't exists. e.g : if you ask for the fifth element of an array but there are only 4 elements in it.. then the index is out of range because it doesn't know what the 5th element is since it doesn't exists.
If I look at you code it should never be out of range since you only ask to acces randomly between 0 an however long the array may be...
The only thing I can think of is that in your inspector maybe one of the elements was left empty causing the out of range.
I may have not solved you problems and my apologies for that. But now you know what it means when your index is out of range.
Answer by Shkizi · Oct 06, 2015 at 10:19 PM
I have 3 obstacles on prefab folder. The error that shows is directed to the line of the Instantiate. I can't figured why
But thank you for your help!
Your answer
