본문 바로가기
Unity 유니티 기초강의

Unity 인디게임 데이터 저장 방법

by 만사오케이프로 2023. 5. 24.
반응형

1.유니티 기본저장방법 PlayerPrefs 사용합니다.

장점)

1)유니티에서 제공하기에 호환성이 좋습니다.

2)디바이스 기기에 상관없이 같은코드로 저장할수 있어 관리가 쉽습니다.

3)직관적이어서 사용하기 쉽습니다.

 

단점)

1)보안에 약하여 해킹위험에 있다.

2)int, float, string으로만 저장할수 있다.

 

인디게임 및 보안을 신경안써도 값들에 유용합니다.

 

 

사용방법

예)

 

저장방법입니다. 첫번째 인자에 키값, 두번째 인자에 저장할 값을 넣습니다.

int형 저장방법입니다. 

 

PlayerPrefs.SetInt("Lv", 1000);

string형 저장방법입니다.

PlayerPrefs.SetString("JewelValue", 10000.ToString());

 

주의사항

값자기 오류로 저장이 안될경우가 있기에 직접 세이브 코드를 넣어주는게 좋습니다.

PlayerPrefs.Save();

 

 

데이터 불러오는 방법입니다. 저장한 값으로 데이터를 가저옵니다.

int형 불러오는 방법입니다. 주의사항으로 저장한 값이 있는지 HasKey로 체크후 데이터를 가져옵니다.

if (PlayerPrefs.HasKey("Lv"))
{
    int Lv = PlayerPrefs.GetInt("Lv");
}

 

 

데이터 삭제하기

특정 데이터를 삭제할수 있습니다.

PlayerPrefs.DeleteKey("Lv");

모든 데이터를 삭제할수 있습니다.

PlayerPrefs.DeleteAll();

 

 

고급 팁 !!!

PlayerPrefs로 Class 저장하기

Json 라이브러리를 사용하여 Class를 String으로 만들어서 저장하면 된다.

무료 Json라이브러리

https://assetstore.unity.com/packages/tools/input-management/json-net-for-unity-11347

사라지고 유니티 에셋으로 사용해야합니다.

 

 

 

예시 

스테이지정보 Class 저장하기

[Serializable]
public class UserData
{
    public int chapter = 1;
    public int stage;
    public int wave;
}

 

Class 저장방법입니다.

string data = JsonConvert.SerializeObject(UserinfoManager.instance.userData);
PlayerPrefs.SetString("UserInfo", data);

 

Class 로드방법입니다.

if (PlayerPrefs.HasKey("UserInfo"))
{
    string userinfo = PlayerPrefs.GetString("UserInfo");
    UserData theObject = JsonConvert.DeserializeObject<UserData>(userinfo);
}

 

2.에셋을 사용하여 저장하기 입니다.

Easy Save 등 다양한 에셋을 이용하여 쉽게 저장할수 있습니다.

 

데이터를 빠르고 쉽게 저장하고 불러올수 있어 시간, 비용 및 노력을 절약할수 있습니다.
모바일 기기에서도 빠른 속도로 작동합니다.
JSON 및 XML과 비교하여 훨씬 빠르고 훨씬 적은 메모리 사용합니다.
Playmaker 완벽 지원하여 코드없이 저장할수 있습니다.
효율적이고 안전한 데이터 암호화를 쉽게 할수 있습니다.

 

3.서버를 통해 저장입니다.

백엔드 구현이 가능하시면 서버를 만들어 저장하는 방법이 가장 안전합니다.

그리고 인디게임 쪽에서는 뒤끝서버를 사용하여 서버를 쉽게 사용하여 게임을 관리하는 경우가 많습니다.

 

반응형

댓글