- 개요
리팩토링에 맞춰 기존의 클래스들을 수정한다
- 스크립트 작업
1) CameraController 클래스

PlayerInputHandler 클래스에서 키 입력을 감지한 후에 호출할 함수들을 위와 같이 추가한다
2) BuildTileSlot 클래스

기존의 싱글톤 인스턴스를 사용하던 방식에서 서비스 로케이터를 사용하여 함수를 호출하도록 수정한다
3) Enemy_Base 클래스

기존의 싱글톤 인스턴스 대신 서비스 로케이터를 사용하여 함수를 호출하도록 수정한다

Die 함수를 수정하여 이벤트 버스에서 적의 죽음과 관련된 이벤트의 콜백함수를 호출하도록 수정한다
4) Enemy_Portal 클래스

기존의 싱글톤 인스턴스 대신 서비스 로케이터를 사용하여 함수를 호출하도록 수정한다
5) BuildManager 클래스

OnEnable 함수와 OnDisable 함수를 추가하여 서비스 로케이터에 클래스를 등록하도록 설정한다

TryDeselectOnWorldClick 함수를 추가하여 Update 함수를 제거하고
PlayerInputHandler 클래스에서 키를 입력하면 해당 함수를 호출하도록 설정한다

MakeBuildTileAvaliablityFalse 함수에서 서비스 로케이터를 통해 함수를 호출하도록 수정한다
6) GameManager 클래스

OnEnable 함수와 OnDisable 함수를 추가하여
이벤트 버스의 적 관련 이벤트에 필요한 콜백함수들을 등록한다

Start 함수를 수정하여 이벤트 버스의 플레이어 관련 이벤트의 콜백함수들을 호출한다

적 관련 이벤트에 연결될 2개의 콜백함수를 추가한다
각각 적이 플레이어의 성에 도달한 경우와 플레이어가 적을 처치한 경우에 호출한다



UpdateHp 함수, UpdateCurrency 함수, CheckEnoughCurrency 함수를 수정하여
플레이어와 관련된 이벤트의 콜백함수들을 호출한다
7) LevelManager 클래스

싱글톤 인스턴스를 생성하는 로직을 제거한다
8) WaveManager 클래스

Collaborators 헤더의 멤버변수들을 추가하여
분리된 맵의 실시간 변경 + 적과 포탈의 생성과 등록을 처리한다

OnEnable 함수와 OnDisable 함수를 추가하여 서비스 로케이터에 클래스를 등록한다

CoWaveLoop 함수를 위와 같이 수정하여
EnemySpawner 멤버변수를 사용하여 적을 생성하고
이벤트 버스의 웨이브 관련 이벤트에 등록된 콜백함수들을 호출하도록 설정한다

AdvanceLevelLayout 함수를 추가하여 LevelTransitionHandler 멤버변수를 통해 맵의 실시간 변경을 처리한다
9) Player_Castle 클래스

OnTriggerEnter 함수의 로직을 수정하여 이벤트 버스의 적 관련 이벤트의 콜백함수를 호출한다
10) VisualEffect_UnitPreview 클래스

Initialize 함수를 추가하여 설치할 유닛의 미리보기에 대한 머티리얼을 설정한다

MakeAllMeshTransperent 함수를 위와 같이 수정하여
BuildManager의 싱글톤 인스턴스가 아닌 인자로 받은 머티리얼을 메쉬에 적용한다
11) VisualEffect_AttackRadius 클래스

SetMaterial 함수를 추가하여 BuildManager의 싱글톤 인스턴스가 아닌 인자로 받은 머티리얼을 적용한다
12) TileAnimator 클래스

OnEnable 함수와 OnDisable 함수를 추가하여 서비스 로케이터에 클래스를 등록한다
13) UI_BuildBtn 클래스

GameManager 클래스와 BuildManager 클래스를 멤버변수로 추가한다

기존에 싱글톤 인스턴스를 사용하던 로직을 제거하고 위와 같이 멤버변수를 통해 함수를 호출하도록 설정한다
14) UI_BuildBtns 클래스

SelectHotkeyButton 함수와 ConfirmBuild 함수를 추가하여
PlayerInputHandler 클래스에서 키 입력을 감지한 후에 해당 함수들을 호출하도록 설정한다
15) UI_InGame 클래스

OnEnable 함수와 OnDisable 함수를 추가하여
이벤트 버스의 플레이어 관련 이벤트와 웨이브 관련 이벤트에 콜백함수들을 연결한다

ForceNextWave 함수를 수정하여 싱글톤 인스턴스가 아닌 서비스 로케이터를 통해 함수를 호출한다
- 최종 실행 결과

'유니티 엔진 - 게임 프로젝트 > 타워 디펜스 게임' 카테고리의 다른 글
| 레벨 관리 - 3) 메인 씬과 인게임 씬간의 전환 (0) | 2026.08.31 |
|---|---|
| 번외) 리팩토링 (3) 보일러 플레이트 문제 해결 (0) | 2026.08.30 |
| 번외) 리팩토링 (1) - 이벤트 버스 패턴 + 클래스 역할 분리 (0) | 2026.08.23 |
| 레벨 관리 - 2) 분리된 타일맵의 오브젝트 처리 + 플레이어 유닛 관리 (0) | 2026.08.11 |
| 레벨 관리 - 1) WaveManager의 활성화 + 타일맵의 분리 (0) | 2026.08.10 |