Unity2D: Repeating of code makes game lag (Spawnning script)
Hi, does anyone knows how to shorten down this script and that I can edit the amount of enemies I want to spawn in, so that I don't have to keep on copying and pasting the same method below again and again, my code is also making my game a bit laggy. Which isn't a good sign. This is my code:
public bool fromTop = false;
public GameObject enemy1;
public float enemy1Time = 2f;
public GameObject enemy2;
public float enemy2Time = 2f;
public GameObject enemy3;
public float enemy3Time = 2f;
public GameObject enemy4;
public float enemy4Time = 2f;
// Variable to know how fast we should create new enemies
void Start() {
InvokeRepeating ("Enemy1", enemy1Time, enemy1Time);
InvokeRepeating ("Enemy2", enemy2Time, enemy2Time);
InvokeRepeating ("Enemy3", enemy3Time, enemy3Time);
InvokeRepeating ("Enemy4", enemy4Time, enemy4Time);
}
void Enemy1() {
Vector2 spawnPoint = new Vector2 (transform.position.x, transform.position.y);
if (fromTop)
{
float x1 = transform.position.x - GetComponent<Renderer> ().bounds.size.x / 2;
float x2 = transform.position.x + GetComponent<Renderer> ().bounds.size.x / 2;
// Randomly pick a x point within the spawn object
spawnPoint.x = Random.Range (x1, x2);
}
else
{
float y1 = transform.position.y - GetComponent<Renderer> ().bounds.size.y / 2;
float y2 = transform.position.y + GetComponent<Renderer> ().bounds.size.y / 2;
// Randomly pick a y point within the spawn object
spawnPoint.y = Random.Range (y1, y2);
}
Instantiate (enemy1, spawnPoint, Quaternion.identity);
}
void Enemy2() {
Vector2 spawnPoint = new Vector2 (transform.position.x, transform.position.y);
if (fromTop)
{
float x1 = transform.position.x - GetComponent<Renderer> ().bounds.size.x / 2;
float x2 = transform.position.x + GetComponent<Renderer> ().bounds.size.x / 2;
// Randomly pick a x point within the spawn object
spawnPoint.x = Random.Range (x1, x2);
}
else
{
float y1 = transform.position.y - GetComponent<Renderer> ().bounds.size.y / 2;
float y2 = transform.position.y + GetComponent<Renderer> ().bounds.size.y / 2;
// Randomly pick a y point within the spawn object
spawnPoint.y = Random.Range (y1, y2);
}
Instantiate (enemy2, spawnPoint, Quaternion.identity);
}
void Enemy3() {
Vector2 spawnPoint = new Vector2 (transform.position.x, transform.position.y);
if (fromTop)
{
float x1 = transform.position.x - GetComponent<Renderer> ().bounds.size.x / 2;
float x2 = transform.position.x + GetComponent<Renderer> ().bounds.size.x / 2;
// Randomly pick a x point within the spawn object
spawnPoint.x = Random.Range (x1, x2);
}
else
{
float y1 = transform.position.y - GetComponent<Renderer> ().bounds.size.y / 2;
float y2 = transform.position.y + GetComponent<Renderer> ().bounds.size.y / 2;
// Randomly pick a y point within the spawn object
spawnPoint.y = Random.Range (y1, y2);
}
Instantiate (enemy3, spawnPoint, Quaternion.identity);
}
void Enemy4() {
Vector2 spawnPoint = new Vector2 (transform.position.x, transform.position.y);
if (fromTop)
{
float x1 = transform.position.x - GetComponent<Renderer> ().bounds.size.x / 2;
float x2 = transform.position.x + GetComponent<Renderer> ().bounds.size.x / 2;
// Randomly pick a x point within the spawn object
spawnPoint.x = Random.Range (x1, x2);
}
else
{
float y1 = transform.position.y - GetComponent<Renderer> ().bounds.size.y / 2;
float y2 = transform.position.y + GetComponent<Renderer> ().bounds.size.y / 2;
// Randomly pick a y point within the spawn object
spawnPoint.y = Random.Range (y1, y2);
}
Instantiate (enemy4, spawnPoint, Quaternion.identity);
}
Please and Thank you. :)
Comment
Your answer
Follow this Question
Related Questions
Unity3d cause of lag? Game lags for no apparent reason and worked fine days ago. 0 Answers
What is the most efficient way to spawn in a lot of cubes, like 10k? [c#] 2 Answers
Spawn script !! Y axis not working 0 Answers
Instantiate not spawning anything 1 Answer
how to make a enemy spawn in a specific place? 2d c# 3 Answers