퍼온 자료

Unity 파일정렬, 데이터저장

ITSkeleton 2020. 6. 18. 11:30
728x90
반응형

출처: https://dawncoding.tistory.com/33

 

Unity에서 파일정렬 방법은 

 

1. XML 로 저장

2. Json으로 파싱후 웹에 전달

3. PlayerPrefs

4. 데이터를 미리만들어둔 Prefab에 저장

5. Serialization(직렬화) 후 파일로 저장

 

등등.. 대표적으로 이런것들이 있습니다.

 

매우 간단하게 장단점을 살펴보자면

 

XML (c#에 내장되있는 Xml.Serialization 을 사용합니다.) ※ 추천

장점 : string 으로 저장되어 데이터를 확인/수정 가능합니다.

단점 : 사용자가 XML을 수정할경우 무분별하게 데이터가 수정될수있는 위험이있습니다. 또한 속도가 매우 느립니다.

 

Json (유니티 엔진에 내장되어있는 JsonUtillty를 사용합니다. 웹서비스 연동시 유용한 포맷입니다.) ※ 추천

장점 : XML과 동일(비슷?)

단점 : XML과 비슷(동일?)

 

PlayerPrefs (유니티 엔진에 내장되어있는 PlayerPrefs를 사용합니다. 간단한 데이터저장에 용이합니다.)

장점 : 매우 간단합니다.

단점 : 용량 제한, 타입 제한 ( int, float, string 만 쓸수있음)

 

Serialization (c#에 내장되어있는 Serialization.Formatters.Binary를 사용합니다.)

장점 : 바이너리로 저장되어 사용자가 파일 수정이 힘듭니다. 또한 속도가 매우 빠릅니다.

단점 : 바이너리로 저장되어 개발자가 파일 수정이 힘듭니다.

 

Prefab (Empty Object를 Prefab으로 미리 만들어둔뒤 데이터를 Prefab에 저장합니다.) ※쓰지마세요 그냥

장점 : 객체를 그대로 저장 / 불러오기 가 가능합니다.

단점 : 저장해야될 객체가 새로 생겨날수록 Prefab도 늘어납니다. 코드의 줄 개수도 늘어납니다. 접근하기 존나 귀찮습니다. AddComponent도 일일히 해줘야합니다. Prefab에 미리 Component 추가 시켜놔도 나중에 수정해야될때 더 좆같습니다. 객체가 늘어나면 늘어날수록 파일개수도 늘어 관리가 존나게 힘듭니다. 수정 할려면 Prefab을 불러와서 수정을 해야합니다.

 

※ 추천 으로 표시된 방법은 제가 추천드리는 방법이며 객관적이 아님을 말씀드립니다.

 

다음 포스팅은 제가 Serialization 방법으로 코딩한 Unity 코드를 보여드리고 사용법도 소개해드리겠습니다.

 

※제가 능력이 된다면 거의 모든 방법으로 코딩하여 블로그에 포스팅 하도록하겠습니다.

 

※코딩지적및비판은 저에게 많은 도움이됩니다.

※코딩질문 또한 많은 도움이 됩니다.


출처: https://itleader.tistory.com/127

 

 

PlayerPrefs를 이용해여 데이터를 로컬에 저장하는 방법

 

저장

 

PlayerPrefs.Set자료형(“문자열 키값”, 저장하고자 하는 값 );

 

PlayerPrefs.SetInt(string key, int value);

PlayerPrefs.SetFloat(string key, float value);

PlayerPrefs.SetString(string key, string value);

 

ex)

 

최근 점수라는 키값으로 저장을 하고자 할 떄 (tmpScore);

 

int score = 10;

 

PlayerPrefs.SetInt(“tmpScore”, score);

 

 

불러오기

 

PlayerPref.Get자료형(“저장했던 키값”, 초기화값);

 

PlayerPref.GetInt(string key, int value);

PlayerPref.GetFloat(string key, float value);

PlayerPref.GetString(string key,string value);

 

ex) 

 

최고 점수라고 저장된 키값을 불러오고자 할 떄 ( “bestScore”);

 

PlayerPref.GetInt(“bestScore”, 0);

 

PlayerPref.Save();

//꼭 해주어야 한다.

 

 

그외 기타 메쏘드

 

PlayerPref.DeleteAll();

// 저장되어 있는 모든 키값과 데이터를 제거한다.

PlayerPref.DeleteKey(string key);

// 지정한 키값과 데이터 값을 제거한다.

 

PlayerPref.HasKey(string key);

//key값이 존재하면 true를 반환하다.

 

728x90
반응형