TIL

[TIL] 내일배움캠프_Unity 팀과제(feat.코루틴)

Hwone 2023. 9. 13. 21:09

플레이어가 스턴에 걸리면 깜빡거리는 효과를 적용하기 위해 코루틴을 공부해서 적용해보았다 


코루틴 : 비동기적으로 실행되며, 일시 중단하거나 일정 시간 동안 대기할 수 있다 

* 코루틴을 사용할 때 보통 Update 말고 다른 곳에서 반복 실행하고 싶을 때 쓰는 느낌? 

*비동기적이란? 

:  다른 작업을 기다리지 않고 계속 진행될 수 있는 상태 즉, 작업이 완료되기를 기다리지 않고 다른 작업을 수행할 수 있도록 함 

 

 IEnumerator StunEffect()
    {
        // WaitForSeconds 객체를 미리 생성하고 변수에 할당하여 가비지 생성을 최소화 
        WaitForSeconds waitTime = new WaitForSeconds(0.2f); 
        for(int i =0; i<=2; i++)
        {
            playerSpriteRenderer.color = Color.gray;
            yield return waitTime; 
            playerSpriteRenderer.color = Color.white;
            yield return waitTime;
        }
    }

yield return :  코루틴을 일시 중단하고 나중에 계속 실행되도록 한다, 코루틴이 특정시간 동안 대기할 때 사용

WaitForSeconds : 대기할 시간을 정의, 코루틴이 일시 중단 되어 다른 작업을 수행하거나 대기하며 시간이 경과될 때 까지 아무것도 하지 않는다 (단점은 new 키워드로 가비지 생성하게 된다 해결 방법은 캐싱 잘 해주면 됨) 

 

추가로 아이템 버프 아이콘도 만드려 했으나 아직 더 공부를 해봐야 할것 같다... 코루틴에 대해서 알고 단점만 조심하면 진짜 편하고 좋을 것 같아서 자세한 공부를 해야겠다