- 개요
게임을 패배하는 경우를 처리하는 로직을 추가하고 레벨을 선택하여 원하는 게임을 플레이할 수 있도록 준비한다
- 스크립트 작업
1) GameEvents 클래스


게임 패배 이벤트를 추가하고, 해당 이벤트를 호출하는 Raise 함수를 생성한다
2) GameManager 클래스

UpdateHp 함수에 위와 같이 로직을 추가하여 현재 체력이 0 이하가 되면 게임 패배 이벤트를 호출한다
3) UI_Defeat 클래스

게임 패배 UI에서 사용할 UI_Defeat 클래스를 생성한다
2개의 함수를 추가하여 하위 버튼의 onClick 이벤트에서 사용한다
RestartButtonClicked 함수를 호출하면 현재 게임을 재시작한다
MainMenuButtonClicked 함수를 호출하면 메인 메뉴로 전환한다
4) UI_InGame 클래스

UI_Defeat 클래스를 멤버변수로 추가한다

OnEnable 함수와 OnDisable 함수에서 게임 패배 이벤트에 대한 멤버 함수를 연결 + 연결해제한다

SetGameOverUI 함수를 위와 같이 구성하여 게임 패배 UI를 활성화한다
5) TileSlot_LevelBtn 클래스

플레이할 레벨을 선택하기 위한 타일에 사용할 TileSlot_LevelBtn 클래스를 생성한다
멤버변수의 구성은 위와 같다
- levelIndex 멤버변수 : 플레이할 레벨의 인덱스
- canClick 멤버변수 : 해당 타일을 클릭할 수 있는지 여부

IPointerDownHandler 인터페이스를 오버라이드하여 위와 같이 정의한다
클릭할 수 있는지 여부를 확인한 다음 테스트 용도로 플레이할 레벨을 로그로 출력한다

EnableTileClick 함수를 추가하여 canClick 멤버변수의 값을 설정한다
6) BuildTileSlot 클래스

Start 함수에 로직을 추가하여 레벨을 선택할 타일에 대해 커서가 동작할 수 있도록 설정한다
7) UI_LevelSelection 클래스

레벨 선택 UI에 사용할 UI_LevelSelection 클래스를 생성한다
멤버변수의 구성은 위와 같다
- levelBtnTiles 멤버변수 : 플레이할 레벨을 선택할 타일들

ActivateButtons 함수를 추가하여 levelBtnTiles 멤버변수의 타일들의 클릭여부를 설정한다

OnEnable 함수와 OnDisable 함수를 추가하여 타일들의 클릭여부를 각각 활성화 + 비활성화한다
8) CameraEffect 클래스

레벨 선택 UI가 활성화되었을 때 설정할 카메라의 위치를 멤버변수로 추가한다

SwitchToLevelSelectionView 함수를 추가하여 레벨 선택 UI가 활성화되면 코루틴을 통해 카메라를 이동시킨다
- 애셋 작업
1) 메인메뉴 UI 오브젝트

게임플레이 버튼의 OnClick 이벤트를 위와 같이 구성하여
버튼을 누르면 레벨 선택 UI를 활성화하고 카메라의 시점을 변경한다
2) 레벨선택 UI 오브젝트

뒤로 버튼의 OnClick 이벤트를 위와 같이 구성하여
버튼을 누르면 메인 메뉴 UI를 활성화하고 카메라의 시점을 변경한다
- 최종 실행 결과

'유니티 엔진 - 게임 프로젝트 > 타워 디펜스 게임' 카테고리의 다른 글
| 레벨 관리 - 6) 게임 클리어와 레벨 잠금 해제 (0) | 2026.09.08 |
|---|---|
| 레벨 관리 - 4) 인게임 씬간의 전환과 씬 재시작 (0) | 2026.09.07 |
| 레벨 관리 - 3) 메인 씬과 인게임 씬간의 전환 (0) | 2026.08.31 |
| 번외) 리팩토링 (3) 보일러 플레이트 문제 해결 (0) | 2026.08.30 |
| 번외) 리팩토링 (2) - 기존의 클래스 수정 (0) | 2026.08.23 |