- 개요
실행중인 인게임에서 사용할 UI를 설계한다
인게임 UI는 다음과 같이 구성되어 있다
- 남아있는 플레이어의 체력을 보여주는 UI
- 다음 웨이브까지 남은 시간을 보여주는 UI + 다음 웨이브를 강제시작하는 버튼 UI
- 건물을 설치하기 위한 자원을 보여주는 UI
- 건물을 설치할 수 있는 버튼 UI
위 4개의 UI 중에서 건물 설치 버튼 UI를 제외한 나머지 UI를 작업한다
- 스크립트 작업
1) GameManager 클래스

게임에 필요한 정보를 관리하는 GameManager 클래스를 생성한다
멤버변수의 구성은 위와 같다
- Player HP 관련 멤버변수 : 플레이어의 최대체력 + 현재체력
- Currency 관련 멤버변수 : 유닛을 설치하기 위한 자원
- Instance 프로퍼티 : GameManager의 싱글톤 객체

Awake 함수를 위와 같이 오버라이드하여 싱글톤 객체를 설정한다

게임에 필요한 정보를 갱신하는 함수들을 추가한다
Start 함수에서는 체력과 자원의 기본값을 설정한다
UpdateHp 함수에서는 현재 체력의 값을 설정하고 인게임 UI에 반영한다
UpdateCurrency 함수에서는 자원의 값을 설정하고 인게임 UI에 반영한다
2) UIManager 클래스

게임을 구성하는 UI들을 관리하는 UIManager 클래스를 생성한다
uiRegistry 중첩 딕셔너리를 사용하여 UI의 타입에 따라 해당하는 이름의 UI 오브젝트를 사용할 수 있다

위 3개의 함수를 사용하여 UIManager를 활용한다
RegisterUI 함수를 호출하여 UIManager에 등록한다
UnRegisterUI 함수를 호출하여 UIManager에서 등록해제한다
GetUI 함수를 호출하여 UIManager에서 탐색하여 반환한다
3) WaveManager 클래스

isForcedSkip 멤버변수를 추가하여 웨이브를 강제로 진행한다

CoWaveLoop 함수를 위와 같이 수정한다
적을 강제 스폰하지 않는다면 이전과 동일하게 카운트다운 후에 적을 스폰한다
이때 적을 스폰하기 이전에는 카운트다운 UI를 비활성화하고, 적을 스폰한 이후에 카운트다운 UI를 활성화한다
또, 스폰하는 동안과 스폰 이후에 웨이브를 강제 진행하는 isForcedSkip 멤버변수의 값을 재설정한다

ForceStartNextWave 함수를 추가하여 다음 웨이브를 강제로 진행할 수 있도록 한다
4) UI_InGame 클래스

인게임 UI를 구성하는 하위 UI들 관련 멤버변수를 추가한다
각각 현재 체력 + 자원 + 다음 웨이브까지 남은 시간을 표현한다

Awake 함수와 OnDestory 함수를 오버라이드하여 UIManager에 인게임 UI를 등록 + 등록해제한다

하위 UI들에 연결될 함수들을 위와 같이 생성한다
UpdateHealthPointsText 함수는 현재 체력 UI를 갱신하는 용도로 사용한다
UpdateCurrencyText 함수는 자원 UI를 갱신하는 용도로 사용한다
EnableWaveTimerText 함수는 웨이브 타이머를 활성화 또는 비활성화하는 용도로 사용한다
ForceNextWave 함수는 버튼에 바인딩되어 다음 웨이브를 강제로 실행한다
5) Enemy_Base 클래스

Die 함수를 위와 같이 수정하고 DestroyEnemy 함수를 추가한다
Die 함수는 적이 플레이어에 의해 파괴되면 호출하여 플레이어가 사용할 수 있는 자원을 증가시키지만,
DestroyEnemy 함수는 적이 플레이어의 성에 닿으면 호출하여 파괴되고 자원없이 피해만을 준다
5) Player_Castle 클래스

OnTriggerEnter 함수의 로직을 위와 같이 수정하여 성에 닿은 적은 피해만을 주도록 설정한다
- 최종 실행 결과

'유니티 엔진 - 게임 프로젝트 > 타워 디펜스 게임' 카테고리의 다른 글
| UI - 4) UI 애니메이션 구현 (2) (0) | 2026.07.13 |
|---|---|
| UI - 3) UI 애니메이션 구현 (1) (0) | 2026.07.07 |
| UI - 1) UI간의 전환과 UI별 기능 설정 (0) | 2026.06.30 |
| 카메라 - 최종) 메뉴별 카메라 전환 + 카메라 흔들거림 (0) | 2026.06.29 |
| 카메라 - 3) 화면 가장자리 이동 (0) | 2026.06.24 |