Programing/Unity(C#)
[C#] Coroutine 사용
hye3193
2024. 3. 22. 17:05
1. 코루틴 이름
private void Start()
{
StartCoroutine(nameof(TestCoroutine)); // 코루틴 시작
StopCoroutine(nameof(TestCoroutine)); // 코루틴 정지
StartCoroutine(nameof(TestCoroutine)); // 코루틴 시작
}
private IEnumerator TestCoroutine()
{
// 함수
}
코루틴 이름을 직접 명시하는 방식이다
* 매개변수를 전달할 수 없다
* stop coroutine으로 코루틴을 멈춘 후 다시 시작시킬 경우 이전 진행 상황은 초기화된다
2. 함수
private void Start()
{
StartCoroutine(TestCoroutine()); // 코루틴 시작
StartCoroutine(TestCoroutine()); // 코루틴 시작(중복으로 실행)
}
private IEnumerator TestCoroutine()
{
// 함수
}
함수명을 명시하는 방식이다
* 여러번 start로 호출할 경우 함수가 여러 개 실행된다
* 매개변수를 전달할 수 있다
* 코루틴을 멈출 수 없다
3. IEnumerator
private void Start()
{
IEnumerator testIEnumerator = TestCoroutine();
StartCoroutine(testIEnumerator); // 코루틴 시작
StopCoroutine(testIEnumerator); // 코루틴 정지
StartCoroutine(testIEnumerator); // 코루틴 재시작(Resume)
}
private IEnumerator TestCoroutine()
{
// 함수
}
IEnumerator 변수를 이용하는 방법이다
* stop coroutine으로 코루틴을 정지시켰다가 다시 start coroutine을 사용하면 이전 진행 상황에서 이어서 진행시킨다
private void Start()
{
IEnumerator testIEnumerator = TestCoroutine();
StartCoroutine(testIEnumerator); // 코루틴 시작
StopCoroutine(testIEnumerator); // 코루틴 정지
testIEnumerator = TestCoroutine(); // 재할당
StartCoroutine(testIEnumerator); // 코루틴 시작
}
private IEnumerator TestCoroutine()
{
// 함수
}
위와 같이 다시 코루틴을 시작시키지 전에 재할당을 해 주면 처음부터 시작하게 된다
4. Coroutine
private void Start()
{
Coroutine testCo = StartCoroutine(TestCoroutine()); // 코루틴 시작
StopCoroutine(testCo); // 코루틴 정지
// StartCoroutine(testCo); : 불가능
}
private IEnumerator TestCoroutine()
{
// 함수
}
Coroutine 변수를 사용하는 방법이다
* stop coroutine으로 정지시킨 후 다시 실행할 수 없다(Start Coroutine의 인자로 Coroutine 변수 전달이 불가능)