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

레벨 관리 - 최종) 게임 씬 이동 방식 변경 및 추가 수정

monstro 2026. 9. 14. 16:42
728x90
반응형

- 개요

게임 씬의 이동 방식을 변경하여 게임을 클리어한 후에 플레이어가 선택하여 다음 씬으로 이동한다

또, 몇 가지 수정 사항을 적용하여 게임을 개선한다

 

- 스크립트 작업

1) 게임 씬 이동 방식 변경 관련 스크립트

1 - 1) GameEvents 클래스

 

 

다음 씬이 시작되기 위해 실행할 OnNextLevelStarted 이벤트를 추가한다

또, 해당 이벤트를 실행하기 위한 Raise 함수도 추가한다

 

1 - 2) GameSceneManager 클래스

 

OnEnable 함수와 OnDisable 함수에 위와 같이 로직을 추가하여

새로 추가한 OnNextLevelStarted 이벤트에 멤버 함수를 연결한다

 

 

HandleStartNextScene 함수를 추가하고 호출하여 현재 게임의 다음 게임 씬으로 이동할 수 있도록 설정한다

 

 

HandleStageCleared 함수에 위와 같이 로직을 추가하여

모든 게임이 완료된 경우가 아니라면 레벨 클리어 UI를 활성화하여 플레이어가 선택할 수 있도록 설정한다

 

1 - 3) UI_InGame 클래스

1

 

인게임 UI 클래스에 레벨 클리어 UI를 멤버변수로 추가한다

 

 

EnableLevelClearUI 함수를 호출하여 레벨 클리어 UI를 활성화한다

 

1 - 4) UI_LevelCompleted 클래스

 

레벨 클리어 UI를 추가하고 위와 같이 멤버변수와 OnEnable 함수를 추가한다

레벨 클리어 UI가 활성화되면 해당 게임동안 처치한 적의 총합을 화면에 표시한다

 

 

하위 버튼 UI의 onClick 이벤트에 바인드할 2개의 함수를 생성한다

NextLevelButtonClicked 함수를 호출하여 다음 게임 씬으로 전환하고

MainMenuButtonClicked 함수를 호출하여 메인 메뉴 씬으로 전환한다

 

1 - 5) EnemySpawner 클래스

 

totalEliminatedEnemyCount 멤버변수를 추가하여 처치된 적의 총합을 기록한다

 

 

RemoveActiveEnemy 함수에 로직을 추가하여 제거된 적을 기록한다

 

 

Getter 함수를 추가하여 처치된 적의 총합을 반환한다

 

2) 추가 수정 관련 스크립트

2 - 1) CameraEffect 클래스

 

플레이어가 피해를 받게 되는 경우 카메라의 시점을 플레이어의 본진으로 전환하는 멤버변수들을 추가한다

 

 

OnEnable 함수와 OnDisable 함수에 로직을 추가하여 

피해를 입는 상황의 이벤트가 발동되면 필요한 멤버함수를 호출하도록 구성한다

 

 

CoEnableCameraControllsAfter 함수를 추가하여 딜레이 후에 카메라를 다시 조작할 수 있도록 설정한다

 

 

카메라의 시점을 변환하는 함수들에 CoEnableCameraControllsAfter 함수를 추가한다

 

 

SwitchCameraFocusOnCastle 함수를 추가하여 카메라의 시점을 플레이어의 본진으로 전환한다

 

 

HandleDamaged 함수를 피해를 입은 상황의 이벤트에 바인딩하여 카메라의 시점을 전환한다

 

2 - 2) Enemy_Base 클래스

 

TryRecoverOnNavMesh 함수를 추가하여

적이 NavMesh 영역을 벗어나면 가장 가까운 NavMesh 영역으로 강제 이동시키도록 구성한다

 

 

GetDistanceToEndPoint 함수를 수정하여

NavMeshAgent가 유효하지 않다면 totalDistance를 사용하도록 방어 코드를 추가한다

 

 

SetNextDestination 함수에 로직을 추가하여 적이 NavMesh 영역을 벗어난 상황을 방어한다

 

 

Update 함수에서도 동일하게 방어 코드를 추가한다

 

- 최종 실행 결과

728x90
반응형