- 개요
유닛을 설치할 수 있는 타일을 선택한 후에 버튼을 눌러 유닛을 생성하도록 설계한다
유닛을 생성한 후에는 자원을 소모하도록 구성한다
- 스크립트 작업
1) UI_Canvas 클래스

유닛 생성 버튼을 묶어서 관리하는 UI_BuildBtns에 대한 프로퍼티를 추가하고
Awake 함수에서 추가한 프로퍼티의 값을 설정한다
2) UI_Pause 클래스 + UI_InGame 클래스


일시정지 UI와 인게임 UI를 교환하는 로직을 F10 키로 동작하도록 코드를 수정한다
3) UI_BuildBtns 클래스

ShowBuildButtons 함수의 로직을 수정하여 외부에서 인자를 받아 유닛 생성 버튼들을 활성화 / 비활성화한다
4) UI_BuildBtn 클래스

유닛을 생성하는 생성 버튼에 사용할 UI_BuildBtn 클래스를 생성한다
멤버변수의 구성은 위와 같다
- towerToBuild 멤버변수 : 생성할 유닛
- costToBuild 멤버변수 : 생성에 필요한 자원
- mainCamera 멤버변수 : 사용중인 카메라
- towerCenterY 멤버변수 : 생성할 유닛의 중심값
- camEffect 멤버변수 : 사용중인 카메라로부터 적용할 FX 효과

Start 함수에서 camEffect 멤버변수에 대한 값을 설정한다

BuildTower 함수를 호출하여 유닛을 생성한다
생성할 유닛이 유효하고, 생성할 수 있는 자원이 있는지 확인한다
유닛을 생성하기 이전에 생성 버튼들의 UI를 숨기고, 상승한 타일을 가라앉힌 후에 카메라 FX 효과를 적용한다
이후 선택한 타일의 위치에 유닛을 생성한다
5) BuildManager 클래스

유닛 생성을 처리하는 BuildManager 클래스에 멤버변수를 추가한다
- uiCanvas 멤버변수 : 최상위 UI
- mainCamera 멤버변수 : 현재 사용중인 카메라
- selectedBuildTile 멤버변수 : 현재 선택한 유닛을 생성할 타일

GetSelectedBuildTile 함수를 통해 selectedBuildTile 멤버변수를 반환한다

EnableBuildMenu 함수와 DisableBuildMenu 함수를 호출하여 유닛을 생성할 버튼 UI들을 활성화 / 비활성화한다

SetSelectedBuildTile 함수를 호출하여 selectedBuildTile 멤버변수의 값을 설정한다

CancleBuildUnit 함수를 호출하여 선택한 타일을 선택취소하고 유닛 생성 버튼 UI들을 비활성화한다

Update 함수를 위와 같이 구성한다
ESC 키를 누르면 활성화되어 있는 유닛 생성 버튼 UI들을 비활성화한다
또, 카메라에서부터 Raycast를 수행하여 유닛을 생성할 수 없는 타일을 클릭해도 유닛 생성 버튼 UI들을 비활성화한다
6) TileAnimator 클래스

activeMoveTileCoroutines 변수에 대한 접근제어를 private으로 복원한다

GetActiveTileMovementCoroutine 함수를 추가하여 인자로 받은 Transform에 대한 CoMoveTile 코루틴 함수를 반환한다

StopTileMovement 함수를 추가하여 인자로 받은 Transform에 대한 코루틴을 중단하고 제거한다

MoveTile 함수에서 StopTileMovement 함수를 호출하도록 로직을 수정한다
7) BuildTileSlot 클래스

GetBuildPosition 함수를 추가하여 유닛을 생성할 위치를 반환한다

MoveTileDownImmediate 함수를 추가하여 현재 진행중인 MoveTileDown 함수를 중단하고
TileAnimator로부터 StopTileMovement 함수를 호출하여 타일을 상승시키는 코루틴을 중단한다
이후 타일의 위치를 defaultPosition으로 설정한다

MoveTileUp 함수에서 TileAnimator의 GetActiveTileMovementCoroutine 함수를 사용한다

OnPointerEnter 함수에서 진행중인 MoveTileDown 함수를 중단한다

OnPointerDown 함수의 로직을 위와 같이 수정한다
선택한 타일을 중복으로 선택하였는지 확인하고, 선택한 타일을 BuildManager에 등록한다
이후 유닛 생성 버튼 UI들을 활성화하고, 진행중인 MoveTileDown 함수를 중단한다
8) GameManager 클래스

CheckEnoughCurrency 함수를 추가하여 유닛을 생성할 수 있는 자원이 충분한지 확인한다
- 최종 실행 결과

'유니티 엔진 - 게임 프로젝트 > 타워 디펜스 게임' 카테고리의 다른 글
| 유닛 설치 - 1) 선택한 타일 시각화 (0) | 2026.07.20 |
|---|---|
| UI - 최종) 유닛 생성 버튼 개선과 일시정지 UI (0) | 2026.07.15 |
| UI - 4) UI 애니메이션 구현 (2) (0) | 2026.07.13 |
| UI - 3) UI 애니메이션 구현 (1) (0) | 2026.07.07 |
| UI - 2) 인게임 UI 구성 (0) | 2026.07.06 |