[내배캠] 유니티 입문 팀프로젝트 마무리

Sungchan Ahn(안성찬)·2024년 10월 22일

내일배움캠프

목록 보기
48/104

피드백 - Coroutine

코루틴으로 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();
            }
        }
    }
profile
게임 개발 기록

0개의 댓글