- 개요
적이 생성되는 웨이브를 관리하는 WaveManager를 필요한 상황에서만 사용하는 기능을 추가한다
또, 게임의 맵에 해당하는 타일맵을 분리하여 게임별로 맵이 다르게 동작하도록 설정한다
- 스크립트 작업
1) WaveManager 클래스

bIsWaveManagerActive 멤버변수를 추가하여 True인 경우에만 WaveManager를 활성화한다

기존의 Start 함수를 제거하고 ActiveWaveManager 함수를 추가하여 대체한다
외부나 에디터에서 우클릭을 통해 해당 함수를 호출하여 WaveManager를 활성화한다
2) TileAnimator 클래스

기존의 yMovementDuration 변수의 이름을 defaultYMovementDuration 변수로 변경한다
이후 새로운 멤버변수들을 추가한다
- mainSceneGrid 멤버변수 : 현재 사용중인 타일맵
- tileMoveDuration 멤버변수 : 타일맵의 타일들을 새롭게 이동시키는 기간
- tileMoveDelay 멤버변수 : 타일맵의 타일들을 새롭게 이동시키는 경우 사용할 간격
- yOffset 멤버변수 : 타일맵의 타일들을 새롭게 이동시킬 거리값
- bIsGridMoving 멤버변수 : 타일맵이 현재 이동중인지 여부

MoveTile 함수를 위와 같이 수정하여 float 인자값을 받은 경우
CoMoveTile 코루틴 함수에 인자로 받은 값을 사용하도록 설정한다

CoMoveTile 함수에서도 동일하게 로직을 수정한다

ApplyOffset 함수를 추가하여 타일맵을 구성하고 있는 타일들의 위치값을 조정한다

CoShowGrid 코루틴 함수를 추가하여 위와 같이 구성한다
인자로 받은 타일맵의 타일들을 순회하면서 MoveTile 함수에 넘겨주어 타일맵의 위치값을 조정한다
순회가 끝난 후에 bIsGridMoving 변수의 값을 False로 변경한다

ShowGrid 함수를 추가하여 위와 같이 구성한다
타일맵이 최초로 로드된 시점에서만 타일맵을 아래로 가라앉히고
그렇지 않은 경우 CoShowGrid 코루틴 함수를 호출하여 타일맵의 위치값을 조정한다

ShowUpMainGrid 함수를 추가하고 호출하여 타일맵의 위치값을 조정한다
또, bIsGridMoving 변수에 대한 Getter 함수를 추가하여 외부에서 접근할 수 있도록 설정한다

Start 함수에서 ShowGrid 함수를 호출하여 타일맵의 위치값을 조정한다
3) GridBuilder 클래스


bFirstLoad 멤버변수를 추가하여 타일맵의 최초 로드 여부를 판단한다
IsOnFirstLoad 함수를 외부에서 호출하여 타일맵의 최초 로드 여부를 반환한다
4) TileSlot 클래스

유닛을 설칠할 수 있는 BuildTileSlot에 대한 TileAnimator 컴포넌트를 설정하는 로직을 제거한다

동일하게 ChangeToBuildTileSlot 함수에서도 제거한다
5) BuildTileSlot 클래스

OnPointer 계열 함수들에 조건문을 추가하여 타일맵이 이동중인지 판단한다
- 최종 실행 결과

'유니티 엔진 - 게임 프로젝트 > 타워 디펜스 게임' 카테고리의 다른 글
| 번외) 리팩토링 (1) - 이벤트 버스 패턴 + 클래스 역할 분리 (0) | 2026.08.23 |
|---|---|
| 레벨 관리 - 2) 분리된 타일맵의 오브젝트 처리 + 플레이어 유닛 관리 (0) | 2026.08.11 |
| 유닛 설치 - 최종) 단축키를 통한 유닛 설치 + 문제 수정 (0) | 2026.08.09 |
| 유닛 설치 - 5) 설치할 유닛의 미리보기 추가 (0) | 2026.08.08 |
| 유닛 설치 - 4) 유닛 생성 버튼 제한과 비용 + 체력 UI 시각효과 추가 (0) | 2026.08.06 |