- 개요
레벨을 구성하는 타일들로 이루어진 타일맵을 자동으로 생성하는 시스템을 추가한다
- 스크립트
1) TileSlot 클래스

SwitchTile 함수의 로직을 위와 같이 수정한다
Undo 그룹을 생성하여 모든 변경사항에 대해 Ctrl + z나 Ctrl + y를 한번 눌러 Undo 또는 Redo를 하도록 설정한다
또, 변경하기 이전의 타일 오브젝트의 이름도 Undo에서 저장하도록 설정한다
변경된 타일의 자식 오브젝트들을 생성하고 자식 오브젝트들의 위치를 Undo에서 저장하는 로직을 추가하였다
마지막으로 Undo.CollapseUndoOperations 함수를 호출하여 Undo 그룹을 완성한다

UpdateCollider 함수를 위와 같이 수정하여
조건문에서 is 연산자를 사용하여 newCollider 매개변수가 자식 클래스 타입이라면 즉시 로컬 변수에 할당한다
위와 같이 구성하여 GetComponent 함수를 호출하는 로직을 제거하였다
2) GridBuilder 클래스

타일맵을 생성하는 클래스의 멤버변수를 위와 같이 구성한다
- mainPrefab 멤버변수 : 생성할 타일맵의 타일
- gridLength 멤버변수 : 타일맵의 길이
- gridWidth 멤버변수 : 타일맵의 너비
- createdTiles 멤버변수 : 생성한 타일맵을 구성하는 타일들

CreateTile 함수를 위와 같이 생성한다
mainPrefab 멤버변수를 바탕으로 게임 오브젝트를 2개의 인자로 지정한 위치에 생성한다
이후, createTiles 멤버변수에 생성한 오브젝트를 저장하고 Undo에 기록한다

ClearGridInternal 함수를 위와 같이 구성하였다
타일들이 저장된 createdTiles 멤버변수를 순회하면서 생성된 타일 오브젝트를 제거한다
Undo.DestoryObjectImmediate 함수를 호출하여 제거된 타일 오브젝트를 기록한다

ClearGrid 함수를 위와 같이 정의한다
ContextMenu 어트리뷰트를 사용하여 컴포넌트를 우클릭하여 함수를 호출한다
Undo.IncrementCurrentGroup 함수를 호출하여 Undo 그룹을 생성하고 createdTiles 멤버변수를 기록한다
이후 ClearGridInternal 함수를 호출 + Clear 함수를 호출하여 생성된 타일 오브젝트들을 완전히 제거한다
이후 수정된 내용을 저장한다

BuildGrid 함수를 위와 같이 정의한다
Undo.IncrementCurrentGroup 함수를 호출하여 createdTiles 멤버변수의 상태를 기록한다
gridLength 변수와 gridWidth 변수의 값만큼 순회하면서 CreateTile 함수를 호출하여 타일 오브젝트를 생성한다
이후 수정된 내용을 저장한다
- 최종 실행 결과

'유니티 엔진 - 게임 프로젝트 > 타워 디펜스 게임' 카테고리의 다른 글
| 웨이브 시스템 - 1) 적을 생성하는 포탈의 추가 (0) | 2026.06.16 |
|---|---|
| 레벨 생성 - 최종) 타일 추가와 타일맵의 NavMesh 수정 (0) | 2026.06.09 |
| 레벨 생성 - 3) 변경할 수 있는 타일 추가 + 타일의 세부 사항 변경 (0) | 2026.06.08 |
| 레벨 생성 - 2) 타일 변경 (0) | 2026.06.08 |
| 레벨 생성 - 1) 타일 시스템 (0) | 2026.06.08 |