유니티 코루틴 호출하는 방법 2가지가 있다.
[ A ] 직접 호출
StartCoroutine(Method());
StartCoroutine(Method(object value)); // 매개변수
[ B ] String 호출
StartCoroutine("Method");
StartCoroutine("Method", value);
B는 스트링이라 호출 오버헤드가 발생. 이후의 성능 차이는 없다고 한다.
하지만 그렇다고 A를 쓰기엔 주의해야 될 점이 있는데,
A방식으로 호출한 코루틴은 StopCoroutine을 사용할 때 string으로 호출해도 중지시킬 수 없다.
StartCoroutine( Method());
StopCoroutine( Method()); // 중지되지않음 : 잘못된 사용법
StartCoroutine( Method() );
StopCoroutine( "Method" ); // 중지되지않음
StartCoroutine( "Method" );
StopCoroutine( "Method" ); // 중지됨
아래가 올바른 사용법.
Coroutine runningCoroutine = null; //코루틴 변수. 1개의 루틴만 돌리기 위해 저장한다.
//만약 이미 돌고 있는 코루틴이 있다면, 정지시킨 후 코루틴을 실행한다.
if(runningCoroutine != null)
{
StopCoroutine(runningCoroutine);
}
runningCoroutine = StartCoroutine(ScaleUp()); //코루틴을 시작하며, 동시에 저장한다.
정리하자면,
1. String으로 호출한 Coroutine은 String으로 멈출 것.
2. 직접 호출한 코루틴은 반환 값을 저장한 다음에 저장된 반환 값을 사용하여 멈출 것.
# 참고로 코루틴을 여러 개 돌리고 싶다면 변수 방식으로 해야 한다. string방식은 이름이 같은 모든 코루틴을 조작한다.
반응형
'게임엔진(GameEngine) > Unity3D' 카테고리의 다른 글
Unity 코루틴(Coroutine) 이해하기: 동작원리 및 구현 (0) | 2022.10.10 |
---|---|
com.google.games:gpgs-plugin-support:0.11.01 --> com.google.games:gpgs-plugin-support:+ (0) | 2022.09.09 |
How to add layer to layer mask? (0) | 2022.06.15 |
유니티(Unity) - DLL 빌드 및 추가 (0) | 2022.06.14 |
How to find scripts location in Hierarchy? (0) | 2022.06.07 |