- 개요
선택한 타일 프리팹의 게임 오브젝트를 다른 타일로 변경하는 기능을 추가한다

현재 타일은 총 3가지로 변경될 수 있으며 각각 위와 같다
- Field 타일 : 적이 이동할 수 없는 타일
- Road 타일 : 적이 이동할 수 있는 타일
- Sideway 타일 : Field 타일과 Road 타일이 혼합된 타일
- 스크립트 작업
1) TileSetHolder 클래스

레벨 생성에 사용하는 타일의 종류를 등록하는 빈 게임 오브젝트의 클래스를 추가한다
현재 사용중인 3가지 타일의 종류를 등록할 수 있도록 구성하였다
2) TileSlot 클래스

에디터라면 Undo하여 타일 변경을 취소할 수 있도록 UnityEditor 네임스페이스를 추가한다

GetMeshRenderer 함수와 GetMeshFilter 함수를 호출하여 타일의 메쉬 렌더러와 메쉬 필터를 반환한다
메쉬 필터를 통해 3D 모델의 데이터를 저장하고, 메쉬 렌더러를 통해 저장된 데이터를 사용하여 렌더링한다

GetMaterial 함수와 GetMesh 함수를 호출하여 머티리얼과 메쉬를 반환한다

SwitchTile 함수의 로직을 위와 같이 변경한다
- 새로 변경할 타일로부터 TileSlot 컴포넌트를 가져와 로컬 변수에 저장
- Undo.RecordObject 함수를 호출하여 변경하기 이전의 타일 오브젝트 관련 정보를 기록
- 타일 오브젝트의 메시 + 머티리얼을 우선 교체하고 자식 오브젝트를 새로 생성
- EditorUtility.SetDirty 함수를 호출하여 변경 사항을 저장
3) TileSlotEditor 클래스

OnEnable 함수를 추가하여 에디터가 시작되면 씬에 존재하는 TileSetHolder 오브젝트를 찾아 저장한다

ApplyTileChange 함수를 추가하여 위와 같이 구성한다
targets 멤버변수를 사용하여 선택한 타일 오브젝트들을 대상으로 SwitchTile 함수를 호출한다

AddTileChangeGUI 함수를 추가한다
선택한 타일 오브젝트를 대상으로 ApplyTileChange 함수를 호출하는 버튼을 인스펙터에 추가한다

OnInspectorGUI 함수를 위와 같이 수정한다
현재 인스펙터의 크기에 맞춰 Field 타일 + Road 타일 + Sideway 타일로 변경하는 버튼을 추가한다
이때 앞선 2개의 타일을 동일한 하나의 행에 추가하고 1개의 타일은 다른 하나의 행에 추가한다
- 최종 실행 결과

'유니티 엔진 - 게임 프로젝트 > 타워 디펜스 게임' 카테고리의 다른 글
| 레벨 생성 - 4) 타일맵 생성 (0) | 2026.06.09 |
|---|---|
| 레벨 생성 - 3) 변경할 수 있는 타일 추가 + 타일의 세부 사항 변경 (0) | 2026.06.08 |
| 레벨 생성 - 1) 타일 시스템 (0) | 2026.06.08 |
| 데미지 시스템 - 최종) 유닛의 타겟 설정 방식과 공격 FX 효과 개선 (0) | 2026.06.02 |
| 데미지 시스템 - 2) 타워 유닛의 공격 방식 개선 (0) | 2026.06.02 |