728x90
반응형
코루틴이란?
코루틴은 유니티에서 제공하는 특수한 함수로, 함수의 실행을 일시 중지하고 특정 조건이 충족될 때까지 대기한 후 다시 실행을 재개할 수 있다.
이를 통해 프레임 간격으로 작업을 나누어 수행하거나, 특정 이벤트가 발생할 때까지 대기하는 등의 비동기 작업을 쉽게 구현할 수 있다.
코루틴의 장점
- 간단한 구현 : 코루틴은 유니티 엔진에 내장된 기능으로, 간단한 비동기 작업을 수행하기에 적합하다.
- 유니티와의 통합 : 유니티의 라이프사이클과 자연스럽게 통합되어 동작한다. 예를 들어, 게임 오브젝트가 비활성화되면 코루틴도 자동으로 중단된다.
- 타이밍 제어 : 프레임 단위로 제어할 수 있어, 프레임 간격으로 작업을 나눠서 수행하기 좋다.
코루틴의 사용법
코루틴을 사용하기 위해서는 IEnumerator 인터페이스를 구현해야 한다.
yield return 키워드를 사용하여 중단점을 지정하고, 특정 조건이 충족될 때까지 대기할 수 있다.
코루틴은 StartCoroutine 메서드를 사용하여 시작한다.
기본
using UnityEngine;
using System.Collections;
public class CoroutineExample : MonoBehaviour
{
void Start()
{
StartCoroutine(TestCoroutine());
}
private IEnumerator TestCoroutine()
{
Debug.Log("시작");
yield return new WaitForSeconds(1); // 1초 대기
Debug.Log("1초 경과");
yield return new WaitForSeconds(1); // 1초 대기
Debug.Log("종료");
}
}
무한 루프
private IEnumerator LoopCoroutine()
{
while (true)
{
Debug.Log("반복");
yield return new WaitForSeconds(1); // 1초마다 반복
}
}
코루틴 취소
코루틴은 StopCoroutine를 사용하여 중단할 수 있다.
스페이스 바를 누르면 코루틴이 취소 된다.
private Coroutine testCoroutine;
void Start()
{
testCoroutine = StartCoroutine(CancelTestCoroutine());
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
StopCoroutine(testCoroutine);
Debug.Log("코루틴 취소");
}
}
IEnumerator CancelTestCoroutine()
{
while (true)
{
Debug.Log("작업 수행 중...");
yield return new WaitForSeconds(1);
}
}
yield return의 종류
yield return null | 다음 프레임까지 대기 |
yield return new WaitForSeconds(float seconds) | 지정된 시간(초) 동안 대기 |
yield return new WaitForEndOfFrame() | 현재 프레임의 렌더링이 완료될 때까지 대기 |
yield return new WaitForFixedUpdate() | 다음 프레임의 FixedUpdate 까지 대기 |
yield return new WaitUntil(Func<bool> predicate) | 지정된 조건이 true가 될 때까지 대기 |
yield return new WaitWhile(Func<bool> predicate) | 지정된 조건이 false가 될 때까지 대기 |
yield return StartCoroutine(IEnumerator routine) | 다른 코루틴을 호출하고 그 코루틴이 완료될 때까지 대기 |
728x90
반응형
'Unity' 카테고리의 다른 글
StateMachineBehaviour 사용 방법 (0) | 2024.06.26 |
---|---|
Coroutine과 UniTask 비교 (0) | 2024.06.22 |
UniTask 사용 방법 (0) | 2024.06.17 |
FSM - State Pattern, State Machine 상태 패턴과 상태 머신, 유한 상태 기계 (1) | 2024.06.13 |
씬 변경을 해도 파괴되지 않는 오브젝트 만들기 (0) | 2024.06.10 |