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

번외) 리팩토링 (2) - 기존의 클래스 수정

monstro 2026. 8. 23. 18:36
728x90
반응형

- 개요

리팩토링에 맞춰 기존의 클래스들을 수정한다

 

- 스크립트 작업

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 함수를 수정하여 싱글톤 인스턴스가 아닌 서비스 로케이터를 통해 함수를 호출한다

 

- 최종 실행 결과

728x90
반응형