- Home /
Instantiate gameobject and add to array (C#)
Hi fellow Uniters, i've run into a little problem here. Any help would be greatly appreciated. I'm trying to instantiate an enemy combatant and have it fill in the enemyCount[] array. Here's my code so far:
using UnityEngine;
using System.Collections;
public class Enemy : MonoBehaviour
{
public GameObject enemyCombatant;
public int[] enemyCount;
public int maxEnemies = 5;
void Start ()
{
enemyCount = new int[maxEnemies];
}
void FixedUpdate ()
{
for (int numberOfEnemies = 0; numberOfEnemies <= maxEnemies; numberOfEnemies++)
{
GameObject enemyCombatantClone = Instantiate(enemyCombatant, new Vector3(40, 2, 0), Quaternion.identity) as GameObject;
}
}
}
Instantiating in FixedUpdate
is not a good idea, especially if your instantiated objects have some colliders or other physics-related components.
On top of that, you will continue to instantiate maxEnemies
instances each fixed frame. Don't think this is what you want.
Answer by Eric5h5 · Apr 24, 2012 at 12:36 AM
In the loop should be
enemyCount[i] = Instantiate (enemyCombatant, new Vector3(40, 2, 0), Quaternion.identity) as GameObject;
Just use the standard "i" for the loop index name; "numberOfEnemies" is not a good name since you're not actually increasing the number of enemies. The loop should be "i < maxEnemies", not
Hi Eric5h5, thanks for the quick reply. Please excuse my late reply. Thanks for the explanation.
did u already declare enemyCount[i] at beginning as GameObject[] enemyCount = new GameObject(); ?
Your answer
Follow this Question
Related Questions
How Do I Add An Instantiated Object To An Array? 3 Answers
Finding the Sum of Values of Multiple GameObjects in an Array + Variable Sized arrays 0 Answers
How do i prevent an object instantiating another object straight away 2 Answers
Make object move in a direction depending on where it spawns? (C#) 1 Answer