Update와 LateUpdate그리고 OnGUI디버깅
게임을 개발 하다보면 수없이 디버깅해야 하는 경우가 있다.
그때 마다 일일이 로그를 찍어 보며 추적 할수는 없다.
필자는 OnGUI를 이용해 로그대신 눈으로 보여지는 값을 자주 확인 하는 방법을 사용한다.
이 OnGUI라는 함수는 유니티 라이프 사이클에서 하위 단에 있어서 가끔은 원하지 않은 결과가 나오는 경우가 있다.
그러한 경우를 살펴보고자 한다.
예) 케릭터 점프
Update구문에서 점프가 가능한 경우를 살펴 보면
1. 점프 버튼이 눌러있는지.
2. 그라운드에 서있는지
3. 점프 상태가 아닌지
이 세가지 조건에 충족하면 점프상태로 변경한다.
Update구문에서 점프시 아래와 같이 상태가 변한다.
1. 그라운드에 서있지 않다.
2. 점프 상태이다.
3. 점프 버튼은 눌러져있을경우도 있고 안눌러져있을 가능성도 있다.
착지시 상태 변화를 알아 보자.
1. 그라운드에있는지를 체크
2. 그라운드에 있다면 그라운드 상태를 true 점프 상태를 false로 변경한다.
3. 점프 버튼은 눌러져있을경우도 있고 안눌러져있을 가능성도 있다.
4. 점프 버튼이 눌러져있다면 다시 점프 상태로 변경하게 된다.
이때 그라운드 상태를 로그로 찍어 보면 그라운드에 닿는 동시 true 점프 버튼이 눌러져있다면 바로 false로 변하게 되는데 이것을 OnGUI에서 확인하게 되면 문제점이 생겨 난다.
이유는 바로 유니티 라이프 사이클에 있다.
Update - OnGUI
업데이트 호출후 OnGUI함수가 호출되는데 업데이트에서 그라운드 상태가 true -> false로 변하기 때문에 OnGUI에서 디버깅 text를 출력하게 되면 그라운드 상태변화가 없는것처럼 보일수 있기 때문이다.
이럴경우 Update내부에서 로그를 찍어 확인해보는 방법이 있고.
비주얼적으로 확인해보고 싶으면 반드시 Update의 값을 받아 화면상에서 보여줘야 한다.
이떄 2DToolKit의 TextMesh가 큰역할을 한다.
>> OnGUI에서만 확인 할경우
>> 2DToolKit을 이용한 TextMesh 디버그 텍스트 이용.