본문 바로가기
프로그래밍/Unity

Unity3d NGUI Label에 Score (점수) 표시하기..

by 메르세데쓰 2015. 4. 16.
반응형

안녕하세요 메르세데스입니다. 책을 보면서 열심히 유니티를 공부하고있었는데요 요즘회사 돌아가는 사정이 빡빡하여 책을 몇주동안 손에 놓고 말았습니다. ㅜㅜ


오늘 내용은 정말 별 것 아닌 내용인데요.. 비행기에서 발사된 총알이 물체에 맞았을 때 스코어가 올라가는것을  구현 하는것입니다. ㅎㅎ 



교재를 통해서 많은 것을 배우고있는데 중간중간 오타도 많고 구현이 안되있는 부분도 있어 진행이 어렵습니다.  코딩에 약한 저같은 초보들에겐 이런 부분이 별것 아닐 지 모르지만 몇시간.. 혹은 몇날며칠걸야 겨우 해결이 되는 부분이기도 하니 구독자에대한 세심함이 좀 아쉬운 것 같습니다.


특히 ngui 쪽을 진행하고 있는데  나와있는 구문자체가 삭제가 되었는지 문법적으로 오류가 있는지 안되서 이것 때문에 한참을 헤멧습니다.


[유니티 게임 프로그래밍] 책을 진행하다보면 NGUI에셋안에 들어있는 UILabel.cs 스크립트 파일안에 메소드를 만들어넣어 활용하는 부분이 나오는데요  this.hasChanged = true; 라는 구문이 안먹힙니다.   대신 this.MarkAsChanged(); 이렇게 처리를 해야 되거든요..   참고로 3.8.0버전에서 했습니다.


NGUI UILabel


아무튼 어렵게 해결을 하고나서 구현을 하는 중인데..


위에 만들어 놓은 함수를 보시면 금방 눈치를 채시겠지만..  그냥 입력값을 NGUI버튼의 Label에 찍어주는 기능밖에 되지 않습니다.


물론.. distanceLabel 이라는 것은..   시간값을 string으로 환산해서 표시가 되지만..  Score쪽 부분은 그냥 0으로 표시됩니다.  제가 주석처리해 놓은 부분이죠..   구현이 안되어 있고 그냥 넘어가버리니 아쉽기만 합니다.


Unity C# Script


그래서 이것을 한번 나름대로 해결해보려고 하였는데 막상 해볼려니 좀 막막하긴 하였습니다.  하지만 차근차근생각해보니 그리 어렵지 않은곳에 답이 있었네요..


SendMessage라는 것을 이용하여 해당 메소드에 접근하는 기능을 이용하면되니..   물체가 총알에 맞아 폭발하는 이벤트쪽에 기능을 구현하면 되지 않을까 라는 생각이 들었습니다.  


그래서 충돌하는 부분인 OnTriggerEnter.. 메소드안에  Score를 10씩 증가시키는 로직을 만들어서 넣었더니 해결이 되네요..


Unity C# Script OnTriggerEnter


정상적으로 Count가 올라가네요..


Unity3d PLayGame


정말 해놓고 보니 별것아닌데..  시간이 오래걸습니다. 대신 기억에는 오래 남을 것 같긴합니다..  

반응형

댓글