hello,
I’m a newbie in unity.
I want to randomly spawn an unknown count of objects.
What is the best way to do this?
If I do this :
private int numberOfFlowers = 20;
public GameObject[] flower;
void Start()
{
SpawnFlowers();
}
private void SpawnFlowers()
{
float randomX = Random.Range(-xSpawn, xSpawn);
float randomZ = Random.Range(-zSpawn, zSpawn);
Vector3 spawnPos = new Vector3(randomX, 0.25f, randomZ);
for (int index = 0; index < numberOfFlowers; index++)
{
Instantiate(flower[index], spawnPos, flower[index].gameObject.transform.rotation);
}
}
I still have to assign the object in unity to the script. In this code assign 20 objects.
What If I want to increase the count of objects?
How do I programmaticly assign an object and not in unity?
I’m not sure I understand correctly but you can pass flower count as a parameter, you have to randomize floverCount value before passing.
public GameObject[] flower;
void Start()
{
SpawnFlowers();
}
private void SpawnFlowers(int flowerCount)
{
float randomX = Random.Range(-xSpawn, xSpawn);
float randomZ = Random.Range(-zSpawn, zSpawn);
Vector3 spawnPos = new Vector3(randomX, 0.25f, randomZ);
for (int index = 0; index < flowerCount; index++)
{
Instantiate(flower[index], spawnPos, flower[index].gameObject.transform.rotation);
}
}
Or you can randomize numberOfFlowers
private int numberOfFlowersMin = 20;
private int numberOfFlowersMax = 20;
public GameObject[] flower;
void Start()
{
SpawnFlowers();
}
private void SpawnFlowers()
{
float randomX = Random.Range(-xSpawn, xSpawn);
float randomZ = Random.Range(-zSpawn, zSpawn);
int flowerCount = Random.Range(numberOfFlowersMin,numberOfFlowersMax);
Vector3 spawnPos = new Vector3(randomX, 0.25f, randomZ);
for (int index = 0; index < flowerCount; index++)
{
Instantiate(flower[index], spawnPos, flower[index].gameObject.transform.rotation);
}
}