코루틴으로 Enemy를 생성하는 부분을 Update에서 하고 있는데, Start에서 코루틴을 한 번 실행시키고 코루틴이 반복되게 하면 Update를 사용하지 않을 수 있다. 또한 new WaitForSeconds를 매번 사용하지 말고 미리 선언해서 사용한다.
// 수정 전
private void Update()
{
if (isSpawn)
{
isSpawn = false;
StartCoroutine(MakeEnemy());
}
}
IEnumerator MakeEnemy()
{
string type = SelectRandomType();
if (EnemyObjectPool.PoolDictionary[type].Any(x => x.activeSelf == false))
{
GameObject obj = EnemyObjectPool.GetObjectFromPool(type);
obj.transform.position = RandomSpawnInRange();
}
yield return new WaitForSeconds(spawnDelayTime);
isSpawn = true;
}
//수정 후
private void Start()
{
StartCoroutine(MakeEnemy());
}
IEnumerator MakeEnemy()
{
while (true)
{
// WaifForSeconds waitForDelay = new WaitForSeconds(spawnDelayTime);
yield return waitForDelay;
string type = SelectRandomType();
if (EnemyObjectPool.PoolDictionary[type].Any(x => x.activeSelf == false))
{
GameObject obj = EnemyObjectPool.GetObjectFromPool(type);
obj.transform.position = RandomSpawnInRange();
}
}
}