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

레벨 생성 - 4) 타일맵 생성

monstro 2026. 6. 9. 11:21
728x90
반응형

- 개요

레벨을 구성하는 타일들로 이루어진 타일맵을 자동으로 생성하는 시스템을 추가한다

 

- 스크립트

1) TileSlot 클래스

 

SwitchTile 함수의 로직을 위와 같이 수정한다

Undo 그룹을 생성하여 모든 변경사항에 대해 Ctrl + zCtrl + 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 함수를 호출하여 타일 오브젝트를 생성한다

이후 수정된 내용을 저장한다

 

- 최종 실행 결과

728x90
반응형