유니티에서 함수 오버라이드 같이 코루틴을 오버라이드 하고 싶은 경우가 있다.
스택오버플로우 같은데서 구글링 후 3-4명 정도의 답변이
yield return StartCoroutine(base.MyCoroutine()); 을 사용하라고 달려있다.
protected virtual IEnumerator MyCoroutine()
{
yield return new WaitForSeconds(1f);
Debug.Log("Base");
}
protected override IEnumerator MyCoroutine()
{
Debug.Log("Override A");
yield return new WaitForSeconds(1f);
yield return StartCoroutine(base.MyCoroutine());
Debug.Log("Override B");
}
하지만 실제로 적용해보면 예상대로 작동 되지 않는다.
Override A -> Base -> Override B 순으로 출력되길 원하지만
Override A -> Base 까지만 출력됨.
protected override IEnumerator MyCoroutine()
{
Debug.Log("Override A");
yield return new WaitForSeconds(1f);
var baseLerp = base.MyCoroutine();
yield return baseLerp.MoveNext();
Debug.Log("Override B");
}
위와 같이 호출해줘야 정상적으로 작동하는 것을 확인할 수 있다.
스택 오버플로우
https://answers.unity.com/questions/927356/overriding-coroutines-not-working-as-expected.html
나중에 다시 확인해봐야함!
'🌍 Unity > 유니티 엔진 동작 관련' 카테고리의 다른 글
Unity의 OnEnable은 프레임 종속일까? (0) | 2021.05.04 |
---|---|
unity unable to install additional sdk platform (0) | 2020.08.26 |
Unity CharacterController Move / SimpleMove 차이 (0) | 2020.07.31 |
Unity Coroutine 상속 / 코루틴 오버라이드 base 호출 (0) | 2020.06.16 |
Unity Compression Method LZ4 (0) | 2020.01.29 |