Json으로 오브젝트 저장 및 불러오기
원래 타일맵만 저장, 로드 기능이 있었는데
오브젝트들도 저장, 로드 기능이 적용되게 했다
이 부분을 만들면서 고민을 많이했는데
1. 씬에 있는 어떤 오브젝트를 저장할 것인가??
유니티를 잘 다루지 못하는 팀원을 위해 만드는 기능인데
씬에 존재하는 모든 오브젝트를 저장하게하면 문제가 생길 수도 있을 것 같았다
그래서 생각한 방법은 두가지.. 정도인데
1. 저장 가능한 오브젝트들은 특정 스크립트를 상속받게 하고 해당 스크립트를 지닌 오브젝트만 저장한다
=> 스크립트를 지니지 않은 오브젝트도 존재할 것이고 구조가 별로라고 생각했다
2. 씬에 존재하는 오브젝트가 프리팹일 경우 저장한다
=> 좀 특이한 방법인데 게임 오브젝트를 저장하기엔 좋다고 생각했다
런타임에서 돌아가는 방식이 아니고 에디터에서만 호출하는 저장 기능이기 때문에 여러 면에서 적당한 해법이라고 생각했다
*런타임에선 프리팹은 존재하지 않는다 인스턴스화된 오브젝트일 뿐
어쨌든 2번으로 에디터에서 스테이지 저장, 로드를 하고 있다
이젠 사용하지 않게 된 이미지, 씬, 타일, 프리팹 등등
너무 많은 파일들이 정리되지 않은 채로 프로젝트에 존재하고 있어서
오늘은 타일 먼저 정리하였다
문제
이미 씬에 박아둔 타일들을 완전 새로운 이미지나 타일로 변경하는게 아니라 원래 존재하던 다른 타일로 변경해야할 땐 어떻게 해야하는가
타일맵에 그려둔 타일을 다른 타일을 참조하게끔 바꿔야했는데
어떻게?? 싶었다
그래서 처음엔 노가다를 해야하나 싶어서 조금 찍다가.. 이건 아니다 싶었다
이 때 생각난게 타일맵의 SetTile기능
씬에 박아둔 타일을 Key로 변경할 타일을 Value로 받아오는 딕셔너리를 통해
타일맵 한칸한칸을 검사하여 해당 위치의 타일을 Value 타일로 교체하였다
쉽게 변경할 수 있어서 다행이었다
사용하지 않게 된 타일들은 깔끔하게 삭제하였다
오브젝트 저장, 로드 구현이 오래걸리게 된건 에디터로 저장, 로드 기능을 만들려고 했으면서
런타임 저장, 로드 기능도 어떻게 구현할지 계속 같이 생각하게돼서 머리가 뒤죽박죽..
그래도 이번 기회로 Json, AssetDatabase, AssetBundle, PrefabUtility, Custom Editor Window, Odin 등 많은걸 배웠다
'프로젝트 > Color Lim 개발일지' 카테고리의 다른 글
2021-07-10 개발일지 (0) | 2021.07.11 |
---|---|
2021-07-09 개발일지 (0) | 2021.07.10 |
2021-07-02~04 개발일지 (0) | 2021.07.03 |
2021-06-29~02 개발일지 (0) | 2021.06.30 |
2021-06-21 개발일지 (0) | 2021.06.22 |