- Home /
Cannot access last element of a list of GameObjects
As the title describes, I'm having trouble accessing the last element of a list.
I have a list here of gameobjects:
List<GameObject> asteroidPrefabs = new List<GameObject>();
And an array of the objects which is assigned from the unity editor, say we have 8 of them:
public GameObject[] asteroids;
And then I initialize the objects and add them to my asteroidPrefabs list:
for (int i = 0; i < asteroids.Length - 1; i++)
{
asteroidPrefabs.Add(asteroids[i]);
}
I initiate them in this function:
public void InstantiateAsteroid(Vector2 position, Quaternion rotation)
{
prefabIndex = Random.Range(0, asteroids.Length - 1);
Instantiate(asteroidPrefabs[prefabIndex], position, rotation);
}
Here's the problem: When the randomizer picks the last element, which is 7 (because I have 8 objects assigned to the list).
It outputs this error:
ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
So I cannot spawn my game object of the last element. Is there a way to fix this?
Answer by HarshadK · Sep 09, 2014 at 10:27 AM
It should be:
for (int i = 0; i <= asteroids.Length - 1; i++)
{
asteroidPrefabs.Add(asteroids[i]);
}
OR
for (int i = 0; i < asteroids.Length; i++)
{
asteroidPrefabs.Add(asteroids[i]);
}
With your current approach you are actually adding one element less meaning an index of 6 only.
Thank you so much. It fixed it. Now the last element is accessible.
Your answer
Follow this Question
Related Questions
A node in a childnode? 1 Answer
How to remove objects from a list ? 3 Answers
Rotate GameObject using Coroutine 2 Answers
Can't add GameObjects to ArrayList 1 Answer
Keep adding targets to a list 2 Answers