반응형
Coroutine(코루틴)
1. 사용 이유
Update함수는 게임 오브젝트가 활성화된 상태에서 매 프레임 호출되어 수행한다.
그런데 만약 3초동안 지연을 시키고 싶으면 어떻게 해야할까?
Update함수 안에서 일정한 시간 간격을 두고 작업을 처리할 수 있도록 해야 한다.
코루틴은 함수 실행을 일시 중지하고 나중에 재개할 수 있는 기능을 제공한다. 이러한 특정 조건을 설정하기 위해서 yield문을 사용한다.
2. Code 예시
01 IEnumerator 함수 선언
코루틴은 IEnumerator를 반환하 함수로 선언된다.
IEnumerator CoroutineExample()
{
yield return
}
02 yield return
코루틴 함수 내에서 yield문을 사용하여 코루틴 함수의 실행을 일시 중지하고 특정 조건이 충족될때까지 대기한다.
yield return null; // 다음 프레임 까지 대기
yield return new WaitForSeconds(float); // 지정한 초 만큼 대기
yield WaitForFixedUpdate; // 다음 FixedUpdate까지 대기
03 코루틴 시작
StartCoroutine(함수이름);
04 3초동안 지연시키는 코드 예시
void Start()
{
StartCoroutine(CoroutineExample());
}
void Update()
{
}
IEnumerator CoroutineExample()
{
int sec = 0;
Debug.Log("Coroutine 시작");
while (true)
{
yield return new WaitForSeconds(1.0f);
sec++;
Debug.Log( sec + "초");
if (sec >= 3) break;
}
Debug.Log("Coroutine 완료");
}
3. 코루틴 장점
01 작업 동시 관리
코루틴을 사용하게 되면 작업을 수행 중에도 동시에 다른 작업을 진행할 수 있다. 예를 들어 애니메이션과 네트워크 요청을 처리할 수 있다.
02 응답성 향상 및 코드의 간결성
코루틴을 사용하면 여러 단계로 이루어진 작업을 각각 분할하여 실행하면서 작업이 완료될 때까지 게임을 멈추지 않게 할 수 있다. 그렇기 때문에 게임의 응답성을 향상 시킬 수 있고, 프레임 드롭을 방지할 수 있다.
03 시간 지연 및 반복 제어
코루틴을 사용하면 위의 예시들 처럼 지연함수와 함께 특정 시간 동안 대기하거나, 반복적인 작업을 제어할 수 있다.
반응형
'유니티 공부 > Unity' 카테고리의 다른 글
Unity - 부모 오브젝트 할당하기(Object Instantiate()) (0) | 2023.05.22 |
---|---|
Unity - 옵저버 패턴(Observer Pattern) (0) | 2023.05.21 |
Unity - IPointer Interface(IPointerEnterHandler등) (0) | 2023.05.12 |
Unity - SetActive, activeSelf (0) | 2023.05.12 |
Unity - 싱글톤(Singleton), Manager (0) | 2023.05.11 |
댓글