게임에 사용자 인터페이스나 UI 요소를 추가하기 위한 큰 아이디어
: Canvas에 해당 요소를 넣는다 (2D 게임에서)
씬 뷰에서 오른쪽 클릭 - UI - Canvas 클릭
>>> 하이라키 창에 Canvas 오브젝트가 생성됨
- TextMeshPro 를 사용하기 위해서 추가적으로 패키지를 임포트할 필요가 있다
캔버스를 추가할 때 이벤트 요소도 추가된다
(메뉴 버튼과 상호작용하거나 게임의 일부로 텍스트 입력을 제공하는 경우 이벤트 시스템이 필요하다)
- Canvas의 이름을 HUD로 변경
- HUD에 Text - TextMeshPro 를 클릭하여 추가
- 아까와 같이 실행하면 게임뷰에서 텍스트가 뜬다
- 텍스트를 특정 위치에 고정시킬 수 있다
- 해상도가 변화해도 텍스트는 특정 위치에 고정되어 있다
- UI Sclae Mode를 Scale With Sreen Size로 변경한다, 스크린 사이즈에 따라 텍스트의 크기가 조정됨
- Constant Pixel Size는 텍스트의 크기가 고정되는 모드이며, 매우 비추천
- 텍스트의 너비와 높이, 굵기 등 여러 설정을 조작할 수 있다
- 'HUD' 태그를 추가하여 HUD의 태그를 설정한다
- HUD에 HUD 스크립트를 부착한다
HUD 스크립트
- TextMeshProGUI 데이터 타입을 사용하려면 using TMPro 지시문이 필요하다
- 점수를 표시하기 위해 int 형의 score 변수를 저장하였다
- TextMeshProGUI 객체에 대한 참조이며, text 속성에 엑세스할 수 있다
- text를 string으로 설정하기 위해 ToString 메서드로 score변수를 string으로 변환한다
(TextMeshPro는 유니티 레퍼런스와 통합되어 있지 않음.
해당 정보에 대해 알고 싶다면 구글에 Unity TextMeshPro를 검색하여 문서를 찾자.)
- HUD 스크립트의 유일한 다른 점: void 타입 공개 메서드가 존재한다
- score 점수를 증가시킨다
- 변경된 score 변수의 값을 적용하기 위해 텍스트를 설정한다
- 해당 메서드를 호출하기 가장 적절한 오브젝트는 TeddyBear이다.
TeddyBear 스크립트
- TeddyBear가 파괴됐을 때 해당 메서드를 호출해서 게임에 포인트를 추가할 수 있기 떄문에 가장 적절하다
- TeddyBear의 가치를 설정하는 변수 BearPoints를 저장한다
- 곰돌이가 물고기와 충돌해서 곰돌이가 죽으면 HUD에서 점수를 업데이트해야 한다
- GetComponent 메서드로 HUD에 연결된 HUD스크립트를 가져와서 hud 변수에 저장한다
- 저장된 hud에서 AddPoints 메서드에 접근한다. BearPoints만큼 점수 추가.
- Score Text에 텍스트를 넣지 않으면 빌드 시 null 오류가 발생한다
- 위의 사진같이 하면 오류 해결
'코딩 공부 > Unity C#' 카테고리의 다른 글
오디오 관리자 추가 Audio Manager (2) | 2024.07.24 |
---|---|
HUD, TextMeshPro 사용하여 텍스트 UI 설정하기 (6) | 2024.07.23 |
문자열 추출 Substring 사용 예제 (0) | 2024.07.21 |
오디오 기본 사항 (0) | 2024.07.21 |
string 문자열 연산(문자열 추출, 문자열 데이터 타입 변환) (0) | 2024.07.21 |