IT/공부 정리

[Unity] 유니티 내부에 데이터 저장 / 로컬 저장

rinix_x 2022. 4. 13. 05:13
반응형

계속 DataBase에 접근하기엔 데이터 양이 많아질수록 딜레이가 생기거나 로드되는 것이 늦어지는 현상이 발생하여

이를 방지하기 위해 일부만 내부 데이터에 저장하기로 했습니다.


반응형

여러 가지가 있는데 그중 JSON을 이용한 방식을 하려고 합니다.

 

우선. 

System.IO는 폴더 안에 저장된 파일을 확인하고, 불러올 때 필요한 시스템입니다.

저희는 게임 파일을 로컬 내 폴더에 저장하고, 불러올 것이라 System.IO를 선언해줍니다.

 

다음은 해당 CS를 인스턴스화 해서 바로 접근할 수 있도록 도와줄 겁니다.

저는 CS이름이 saveData라 saveData스크립트를 인스턴스화 시켜줬습니다.

이제는 저장할 게임 데이터의 파일 이름을 설정해줍니다.

 

이때. json안에 파일 이름을 설정해주시면 됩니다.

data.json 이런 식으로 앞에 적으시면 됩니다.

이때 당연한 거지만, 영어로 적으셔야 합니다 :)

그러고 나서 public GameData를 선언했습니다.

GameData는 저장할 게임 데이터 정보의 구조화된 CS로,

각자 자신의 데이터 정보가 담긴 cs를 선언하시면 됩니다.

GameData부분은 밑에 다룰 것이니 마저 작성해봅시다!

계속하면, 게임 데이터를 기록한 파일 내용들을 불러오는 것입니다.

저장된 파일이 있으면, 저장된 파일을 불러올 것이고, 없으면 새로 생성해 줍니다.

오른쪽은 데이터를 저장해주는 것입니다. 

해당되는 파일 위치에 gameData를 덮어 씌운 기로 저장하는 방식입니다.

자동 저장을 위해 아래 OnApplicationQuit() 메서드를 사용했습니다.

 

 

그다음은 GameData.cs를 다뤄보겠습니다.

직렬화를 해주기 위해 Serializable을 해주어야 합니다.

그러고 나서 저장할 원하시는 게임 데이터를 넣어주시면 됩니다.

저 같은 경우는 좌표 정보를 저장하고 싶어서 저렇게 해보았습니다.

이거 보고 하시는 분은 각자 원하는 정보..

골드나 점수, 최고 점수, 캐릭터 위치 정보, 몇 번째 저장 등등 필요한 정보를 적어주시면 됩니다.

해서 실행을 해보면!!

잘 저장되는 것을 볼 수 있었습니다

반응형