본문 바로가기

카테고리 없음

내일배움캠프 65일차 TIL - json? json? json?

 

오늘은 경험치 데이터 관리에 대해 배우고 그것을 구현해보았다.

json으로 데이터를 저장해 그것을 끌어다 쓰는 것은 이미 세이브/로드를 구현할때 해봤지만,

이번에는 저장된 json을 파싱으로 끌어와서 유저의 데이터와 연결을 시켜줘야했어서 어떻게보면 아예 다른 작업이었다고 봐도 될듯하다.

 

위의 움짤이 완성본이다.

경험치의 상승에 따라 슬라이더바의 게이지가 채워지고 게이지가 다 찼을때 오른쪽의 레벨도 오르는 모습이다.

다만 여기까지 오는데 너무 많은 일이 있었다..

 

일단 json 파일을 파싱하는거부터가 문제였다.

분명 받아오는 주소도 제대로 적었고, TextAsset을 받아오게끔 했다.

그리고 JsonUtitliy.FromJson<>(data.text)로 제이슨에서 정보를 받아오는 코드까지 제대로 작성했다.

그럼에도 불구하고 Debug.Log로 제대로 파싱됐는지 확인해보면 (EXPData.Count를 통해 데이터 연결 확인) 파싱이 안되어있더라..

왜 그런지 도무지 모르겠어서 팀원들에게 물어보니 json은 데이터를 문자열로 받아오기 때문에 데이터를 담아낼 List의 이름을 json의 파일명과 토씨하나 틀리면 안된다고 하더라

 

 

이와 같이 작성해주니 json 데이터를 잘 받아왔다.

json 데이터를 받아왔으니 일사천리!! 로 진행될줄 알았으나...

레벨업 기능을 구현하고 현재 경험치를 나타내주는 slider에 요구경험치값을 어떻게 받아와야할지 모르겠더라

이것도 물어보니 json의 data들은 각각의 index를 가지기 때문에 그냥 단순히 데이터가 저장된 List를 가져다 쓰는게 아니라, 접근해야할 [index]를 붙여줘야 한다는 것이었다.

(사실 json.Count를 찍었을때 요소만큼의 Count가 찍히는걸 보면 각 요소가 index를 가진다는 것을 확인할 수 있었다. 근데 그걸 Count를 찍어놓고도 파악을 못했다. 나는 바보가 맞다 진짜로.)

 

그렇게 해결하고 완성된 코드다.

slider의 값은 0부터 1이기에 float로 변환해주고, 현재경험치 / 요구경험치 의 값으로 설정해주었다.

 

기본적인 레벨업 기능 구현과 그것을 표시해주는 slider바 설정이 끝난 이후에는 보완을 해주었다.

먼저 만렙을 20으로 잡고 20이 찍혔을때 예외처리를 걸어주어야 했다.

어디서 걸어줘야 하나 알지못해서 레벨업을 실행하는 코드에서부터 차근차근 올라오며 ArgumentException이 뜨는지 확인해보았다.

그 결과, 레벨업을 해야하는지 말아야하는지를 체크하는 부분에서 예외처리를 걸어주면 되었다.

그리고 레벨 요구 경험치보다 훨씬 웃돌아서 2,3 혹은 그 이상의 레벨이 오르는 경우에는 단발적으로 레벨업 코드를 실행하는 것이 아니라 while 반복문을 써서 요구경험치보다 현재 경험치가 낮아질때까지 레벨업 코드를 실행시켜 주었다.

그리고 slider바의 value에도 예외처리를 걸어줘야 한다.

20레벨일 경우 slider의 value를 1로 잡아주고, 경험치가 꽉 찼음을 보여주는 maxLevelText를 활성화해주었다.

levelup 관련 코드
ui 관련 코드

위는 완성된 코드다.

json에서 막히고 머리 때려가면서 혼자서 해결해보려고 했지만 답이 나오질 않았다.

근데 팀원들한테 물어보고 5분만에 해결이 되었다.

팀의 중요성을 다시금 느끼게 되었다.

나도 팀원들에게 도움을 줄 수 있는 사람이 되고싶다.

 

내일은 인트로씬, 엔드씬 구성하고, 로딩창도 만들고 해보려고 한다.

우리팀이 진행이 더디다고 하셔서 빡세게 달려야겠다 싶다.

내일도 화이팅!!