오늘은 Json으로 만든 임시 데이터 파일을 게임 시작 할 때 읽어오고, 게임 종료할 때 저장하는 기능을 구현하였습니다.
저번 개발 일지에서 두가지를 적었습니다.
하나는 아바타 정보를 index로 가지고 있는 것. 다른 하나는 DataManager가 함수만 제공하도록 한다는 것.
이 중 한가지만 적용이 되었습니다.
아바타 정보를 index로 가지고 있는 것은 여러모로 편리했습니다.
코드상으로도 좀 더 직관적이라 적절한 조치였다고 생각합니다.
하지만 이 방식대로 하면 DataManager가 데이터를 가지고 있지 않으면 값이 바뀔 때마다 UI를 들락날락 해야 했습니다.
그리고 처음 게임이 켜졌을 때 초기화 순서를 확실히 몰라 NullReferenceException이 자주 발생했습니다.
그래서 DataManager가 모든 데이터를 가지고 있도록 하였습니다.
다만 UI에서 값이 바뀔 때의 Index는 각 컴포넌트에 부착된 스크립트들이 가지고 있다가, 게임을 종료 할 때 MainMenuController가 모아서 DataManager의 SaveData 함수를 호출하면서 값을 저장합니다.
이 외에 한가지 작업이 이루어졌습니다.
바로 일괄적으로 적용되던 UpdateList를 하위 클래스로 분할하여 적용하였습니다.
그 이유는 Json 파일을 읽어오는 과정에서 필요한 타입만 다르지 작업 자체는 반복적이라 generic으로 함수를 지정했기 때문입니다.
그 결과 UpdateList에서 자신이 붙어있는 컴포넌트에 해당하는 Data를 DataManager에서 가져오는 방법을 찾을 수 없었습니다.
그래서 컴포넌트 별로 별도의 UpdateList의 하위 클래스를 붙이고, 이벤트 함수를 override 하여 그 내부에서 데이터를 따로 받아오도록 하였습니다.
마지막으로 테스트를 위한 멀티플레이 개발은 무료 에셋인 Photon Unity Networking 2(PUN2)를 사용하기로 결정하였습니다.
이를 이용해 최대한 함수를 wrapping하여 인터넷 상으로 P2P 방식을 통해 멀티플레이를 하도록 할 예정입니다.
이후에는 UI 개선과 이미지와 슬라이더 기능 추가, 견본 이미지를 통한 아바타 생성을 할 예정입니다.
여기까지 마무리가 된다면 그 이후에는 한숨 돌리며 게임 개발을 할 수 있을 것 같습니다.
개인적으로 게임 장르 별 공용 함수를 최대한 제작하고, 이를 이용할 계획입니다.
'폐기된 게시판 > MBGC' 카테고리의 다른 글
20.03.03 개발일지 (0) | 2020.03.03 |
---|---|
20.02.28 개발일지 (0) | 2020.02.28 |
20.02.21 개발일지 (0) | 2020.02.21 |
20.02.18 개발일지 (0) | 2020.02.18 |
20.02.14 개발일지 (0) | 2020.02.14 |