맵 생성 관리에 대해 한번 정리하고자 한다
목표
JSON으로 맵 데이터를 저장, 로드하여 생성한다
제작 이유
씬마다 스테이지를 만들어 두고 씬을 불러오면 용량이 커짐
망설이는 이유
스테이지를 만들어두고 관리하는게 테스트하기나 관리하기 편하다라는 의견 존재
=> 스테이지 생성 버튼 누르면 씬에 바로 스테이지 생성되게끔 커스텀 에디터를 만들면 상관 없지 않을까?
스테이지 로드 (맵 로드, 플레이어 생성 위치 포함, 적 스폰 위치 포함, 트랩도 타일처럼 찍음(피봇 위치 조정))
타일맵엔 타일들만.
유니티의 타일맵에 현재 찍혀있는 타일들의 정보를 JSON화
Map Load시 JSON정보를 바탕으로 타일을 찍는 형식으로 가보자
필요한 것
커스텀 에디터로 Map Load, Save 제작
버튼
존재하는 타일 Json파일 목록
타일이름 누른 후 Load 버튼 누르면 씬에 새로운 타일맵에 저장된 Json 데이터 기반으로 맵 생성
Json엔 타일의 name 저장, name에 맞는 타일을 타일맵에 생성하는 형식
타일맵 오브젝트 드래그앤드랍하는 칸
이름 입력하는 인풋필드
로드할 맵 이름 선택 -> Map Load시 Hierarchy에 해당 맵 생성 (딕셔너리<enum, MapData> 사용)
알아야 할 것들
Tilemap
유니티에서 타일맵을 생성하면 생성되는 Tilemap입니다
스크립트로 들어가셔서 보거나 Unity Document를 통해서 내부 API들을 볼 수 있는데요
TileBase
Tile Palette에 들어있는 모든 Tile들은 TileBase를 상속받는다
Tile
TileData
타일을 불러오려면 위치와 어떤 타일인지 알려주는 정보가 필요하다
맵 에디터를 처음부터 만들어서 쓰는 경우 enum 등으로 타일을 구분해서 정보를 저장하고 불러오면 되지만
유니티 타일맵을 사용하면서 타일들의 정보를 저장하고 불러오려면 어떻게 하는게 좋을까?
유니티 타일들은 Scriptable Object로 생성되어 있다.
아니 그 전에 이런식으로 Json형식으로 저장하고 불러오는게 이득일까?
Json으로 저장 및 불러오기를 해보질 않아서 아직 감이 잘 오지 않는다
1. 맵마다 Tilemap으로 만들어 둔 뒤 프리팹화 => 만들어진 프리팹을 스테이지 로드할 때 같이 불러온다
2. 맵마다 Tilemap을 찍은 뒤 Json으로 타일, 위치 저장 => 스테이지 로드할 때 저장된 Json파일 기반으로 Tilemap을 Load한다
많은 차이가 있을까?
모르면 해봐야겠지. 가즈아~
Editor에는 저장된 Map파일이 선택가능해야 하고 선택 후 Load 버튼을 누르면 Tilemap에 Map이 로드된다
unity 2d tilemap generator
'프로젝트 > Color Lim 개발일지' 카테고리의 다른 글
2021-06-09~11 개발일지 (0) | 2021.06.11 |
---|---|
2021-06-07~8 개발일지 (0) | 2021.06.08 |
2021-06-01 개발일지 (0) | 2021.06.01 |
2021-05-30 개발일지 (0) | 2021.05.31 |
2021-05-28 개발일지 (0) | 2021.05.29 |