일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- MongoDB
- springboot
- 파이썬
- JSON
- Python
- 백준
- react
- oAuth
- 유니티
- bcrypt
- express
- jwt
- 스프링
- AWS
- OAuth2.0
- 게임
- IntelliJ
- c#
- 백엔드
- spring
- 깃
- 코딩
- 스프링부트
- node.js
- netlify
- 프로그래밍
- frontend
- 게임개발
- RiotAPI
- unity
- Today
- Total
Unwound Developer
유니티 - 닷지 UI 생성 본문
UI는 User Interface의 줄임말이에요.
게임을 진행할 때, 화면에 게임 외적으로 글씨나 아이콘 등으로 기능을 제공해주는 것들을 본 적 있을거에요.
게임을 진행하는데 있어서 UI가 없다면, 진행 자체가 불가능할 것입니다.
유저에게 게임의 전반적인 진행상황이나, 편의를 위한 기능들을 제공해주기 때문이에요.
유니티는 UI도 그냥 씬 속의 오브젝트로 취급해요.
그래서, 별도의 화면으로 이동할 필요없이, 다른 오브젝트들 처럼 생성하고 관리할 수 있어요.
전 Text를 선택할게요.
그리고 Text를 선택해보면
저 네모난 top center라고 되어있는게 앵커라고 하는 것입니다.
텍스트를 화면 어디에 표시할지 정렬하는 기능을 가지고있어요.
누르면 이런 모양으로 나오는데, 저는 가운데 위쪽으로 정렬했어요.
좀 내려가보면 Text라는 컴포넌트 부분이 나오는데, 텍스트를 편집하거나 폰트 관련된 설정이 가능해요.
Hierarchy에서 보면 몇 초가 지났나 표시해주는 Time Text와
게임 오버를 알리는 Gameover Text, 내 최고 점수를 표시해주는 Record Text가 각각있어요.
그런데, 최고 점수표시는 내가 게임오버가 되었을 때만 나와야해요.
이 때, UI끼리 자식 설정이 가능하대요.
우선, Record Text를 Gameover Text에 드래그&드롭 해줘요.
그럼 위 사진처럼 자식으로 들어가게 됩니다.
Gameover Text의 Inspector 맨 위를 보면 제목 옆에 체크박스가 하나 있는데,
저 체크를 풀어버리면 평소에는 비활성화가 되어 안보여요.
이제, 텍스트가 게임에 맞춰 나오게하기 위해서 GameManager 스크립트를 만들게요.
gameoverText 객체생성, Text형 변수들을 선언해요.
얼마나 생존했는지를 알려줄 변수와, 게임오버 여부를 가진 bool 변수까지.
그리고, Start메소드에선 0초로 시작해야하니까 survive Time을 0으로 초기화,
Gameover여부를 묻는 변수를 false로 초기화 해요.
Update 메소드에서는
isGameover 변수가 false일때, surviveTime에 deltaTime을 더해줘요.
그리고 timeText의 text를 surviveTime을 표시하도록 갱신해줘요.
isGameover이 true라면 재시작 버튼 R을 눌렀을 때 게임을 재시작 할 수 있또록
씬을 다시 불러와요.
마지막으로 Endgame 메소드에요.
이 메소드를 실행하게 되면, isGameover가 true가 됩니다.
게임 오버가 되는거죠.
그리고, 아까 비활성화 했던 게임오버 텍스트를 SetActive 메소드를 통해서 활성화해요.
PlayerPrefs는 플레이어 설정이라고 한대요.
어떤 값을 컴퓨터 로컬에 저장하고, 나중에 다시 불러오는 클래스라고 합니다.
키 - 값을 단위로 로컬에 저장하는데, 여기선 BestTime이라는 키를 통해 bestTime을 저장해요.
bestTime은 이번 게임의 survive Time이 bestTime보다 좋은 기록이라면, 갱신하도록 if문을 사용했어요.
로컬에 값을 저장하기 때문에, 게임을 재시작한다고 해도, bestTime을 다시불러와 최고기록이 남아있는거에요.
마지막으로, recordText의 text를 설정해요.
여기서 EndGame메소드를 만들었으면, EndGame메소드를 불러서 실행하는 녀석이 필요할텐데요.
지난번에 만들었던 PlayerController 스크립트에 Die메소드가 있었는데, 여기에서 불러야합니다.
게임매니저 객체를 FindObject를 통해서 생성해주고, EndGame메소드를 부르는 거에요.
그럼 플레이어가 Bullet에 닿았을 때 실행되겠쬬.
이제 게임매니저 스크립트를 씬에 적용시키기 위해서 GameManager라는 이름의 Empty object를 만들고,
드래그&드롭으로 넣어줘요.
그리고, Time Text와 Record Text, GameoverText에 각각 맞는 오브젝트를 드래그&드롭으로 할당해요.
게임 시작화면에서는 시간만 표시되는 모습입니다.
죽었을땐, 게임오버 텍스트와 레코드 텍스트가 활성화 되는 모습이구요.
여기까지가 레트로의 유니티 책을 공부하면서, 닷지 게임을 만드는 내용이었어요.
1권내용은 벌써 벡터수학 장만을 남기고 있어요.
2권에선 다양한 프로젝트들이 있더라구요. 얼마나 복잡할지 걱정되네요...
'Unity > Unity, C#' 카테고리의 다른 글
유니티 - 2D 런 게임, 애니메이션 (0) | 2022.01.11 |
---|---|
유니티 - 2D 런 게임, 스프라이트 (0) | 2022.01.11 |
유니티 - 닷지 오브젝트 자동 생성하기 (0) | 2022.01.07 |
유니티 - 닷지 트리거 생성 (총알) (0) | 2022.01.07 |
유니티 - 닷지 플레이어 생성 (0) | 2022.01.07 |