안녕하세요? 윈디입니다.
유니티 내부에서 코루틴을 사용하다 보면, 코루틴이 잘 작동하지 않을 때가 종종 있습니다.
특히, 오브젝트가 삭제되거나 비활성화되거나, 혹은 스크립트 사이를 넘나들며 코루틴을 사용하다 보면, 코루틴이 잘 작동하지 않을 때가
종종 발생하는데요, 그래도 미리 알아두고 사용하다 보면 이런 오류들을 최대한 피하거나, 아니면 오류를 발견했을때 재빨리 해결할 수 있겠다는 생각이 들어서 제가 이번 게임을 코딩하면서 접한 몇 가지 오류들을 정리해 봤습니다.
일단 코루틴을 사용하는 이유는 원하는 만큼 스크립트를 쉬게 하여 연산에 큰 이득을 얻기 때문인데요,
코루틴의 개념 자체에 대해서는 여기에 포스팅 해 두었으니 참고해 보시는것도 좋을 것 같아요.
그래서 가장 자주 사용하는 이것, yield return new waitForSecond() ; 를 사용할 때 확인해야 할 것들을 적어 보았습니다.
1. 코루틴을 호출했던 스크립트가 yield return 시점부터 돌아갈 시점 사이에 비활성화/삭제 되어있으면, 코루틴은 더이상 동작하지 않는다.
코루틴의 경우, return 을 통해 호출받은 스크립트로 돌아갔다가 일정 시간 후에 다시 호출이 되는 형식으로 동작하는 것 같습니다.
따라서 return 시점에 돌아갈 스크립트가 활성화되어있지 않거나 삭제되어 있으면, 코루틴은 다시 돌아올 수 없는 길을 떠나버리게 되더군요.
2. (당연하지만) 코루틴을 실행하고 있는 스크립트가 비활성화/삭제 되어버리면, 코루틴은 그 시점부터 동작하지 않는다.
3. 코루틴 안에서 코루틴을 호출할 경우, 호출한 코루틴이 yield return 시점부터 돌아갈 시점 사이에 끝나있다면,
호출받은 코루틴은 더이상 동작하지 않는다.
- 1과 같은 이유입니다.
yield break 같은 것들을 사용하실때 가끔 발생하니 꼭 주의해 주세요!
다 쓰고 보니, 당연한 것들만 써놨네요.... 조금 부끄럽기도 하지만 다시 실수하지 않는다는 의미에서 꼭 잊지 않아야겠습니다!
'유니티 게임 개발하기 > 2D 게임 개발일지' 카테고리의 다른 글
유니티 - 탄막 슈팅 게임을 만들자 (9) - 배경을 만들 때 필요한 것 (6) | 2015.12.13 |
---|---|
유니티 - 탄막 슈팅 게임을 만들자 (8) - 몬스터를 관리하는 오브젝트 풀링! (0) | 2015.10.02 |
유니티 - 탄막 슈팅 게임을 만들자 (7) UI 만들기 - 상태와 점수 표시 (3) | 2015.09.01 |
유니티 - 탄막 슈팅 게임을 만들자 (6), 충돌, 그 불필요한 연산을 삭제하기. 연출을 사용하자! (1) | 2015.08.09 |
유니티 - 탄막 슈팅 게임을 만들자 (5), 프레임 드랍을 해결하기. (0) | 2015.07.24 |
유니티 - 탄막 슈팅 게임을 만들자 (4), Atan을 이용해서 2D에서 lookAt 함수 기능을 구현해보자. (2) | 2015.07.12 |
유니티 - 탄막 슈팅 게임을 만들자 (3), itween 사용하기 (0) | 2015.07.06 |
유니티 - 탄막 슈팅 게임을 만들자(2), 이벤트(Event)와 Delegate 의 사용 (2) | 2015.06.27 |
유니티 - 탄막 슈팅 게임을 만들자(1), Sin(),Cos()과 Mathf 의 사용 (0) | 2015.06.27 |
유니티 - 스크립트 함수의 실행순서 (Awake와 OnEnable) (0) | 2015.06.15 |