유니티 엔진 - 게임 프로젝트/타워 디펜스 게임

레벨 관리 - 5) 게임 패배 처리와 레벨 선택 준비

monstro 2026. 9. 8. 11:33
728x90
반응형

- 개요

게임을 패배하는 경우를 처리하는 로직을 추가하고 레벨을 선택하여 원하는 게임을 플레이할 수 있도록 준비한다

 

- 스크립트 작업

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 이벤트

 

게임플레이 버튼의 OnClick 이벤트를 위와 같이 구성하여 

버튼을 누르면 레벨 선택 UI를 활성화하고 카메라의 시점을 변경한다

 

2) 레벨선택 UI 오브젝트

뒤로 버튼의 OnClick 이벤트

 

뒤로 버튼의 OnClick 이벤트를 위와 같이 구성하여

버튼을 누르면 메인 메뉴 UI를 활성화하고 카메라의 시점을 변경한다

 

- 최종 실행 결과

 

728x90
반응형