반응형

로컬에 데이터를 저장하는 방법은 여러 가지가 있습니다.

 

저는 저장될 내용에 따라 JSON, 바이너리, PlayerPrefs 등 혼용해서 많이 쓰는데요.

 

그중 이번에는

아마도 유니티 내에서 가장 간단한 PlayerPrefs를 활용해볼까 합니다.

 

 

PlayerPrefs

일단 알아 두셔야 할 점은,

-간편하게 관리할 수 있다는 점.

-간편하고 쉬운만큼 보안성은 개나 줘 버려서 없음. (저장 위치의 파일을 열어보면 날 것 그대로의 값이..)

 

위 같은 이유로 중요한 데이터는 웬만해서는 이 방법을 추천하지 않습니다.

보통, 게임 옵션의 세팅 정보 (BGM, Sound의 볼륨 크기, 진동 유무) 정도로 사용하시는 게 적당하지 않을까 싶네요.

(만약 정말 만약 PlayerPrefs를 활용해서 중요한 게임 데이터를 저장코자 한다면,

꼭 저장 전에 암호화한 값을 저장해주세요. 암호화는 나중에 한 번 다뤄 보도록 하겠습니다.)

 

PlayerPrefs은 기본적으로 Int / Float / String의 변수 타입을 지원합니다.

 

(Bool 변수형의 경우는 지원을 하지 않는 것으로 보이는데, 저의 경우 삼항 연산을 이용 Int로 변환해서 사용합니다.)

 

(배열을 간혹 저장해야 할 때가 있는데 배열을 String으로 변환 후 Spilt을 이용해 사용합니다.)

 

저장하기(Save)

정말 간단히 저장된다.

//기본적으로 PlayerPrefs는 ("키", 값) 형태로 사용

//Int - 정수형 변수의 저장 
PlayerPrefs.SetInt("키", int);

//String - 문자열 형태의 변수 저장
PlayerPrefs.SetString("키", string);


//Float - 실수형의 변수 저장
PlayerPrefs.SetFloat("키", float);

예를 들어

//유저 데이터 세이브

//캐릭터 이름
PlayerPrefs.SetString("CharName", "무예꼬마");

//캐릭터 레벨
PlayerPrefs.SetInt("Level", 10); 

//치명타 확률
PlayerPrefs.SetFloat("Critical", 0.5f);

불러오기(Load)

로드 역시 간단하다.

 

//기본적으로 PlayerPrefs는 ("키", 값) 형태로 사용

//Int - 정수형 변수의 저장 
PlayerPrefs.GetInt("키");

//String - 문자열 형태의 변수 저장
PlayerPrefs.GetString("키");

//Float - 실수형의 변수 저장
PlayerPrefs.GetFloat("키");

 

//유저 데이터 로드

//캐릭터 이름
string charName = PlayerPrefs.SetString("CharName"); //"무예꼬마"

//캐릭터 레벨
int level = PlayerPrefs.SetInt("Level"); //10

//치명타 확률
float criticalPoint =PlayerPrefs.SetFloat("Critical"); //0.5f

끝이다.

 

 

다만 만약에 로드를 했는데 해당 키가 없을 경우 기본 초기값을 설정해주는 방법이 있는데

//불러올때 초기값을 설정해주면, 혹시나 값이 없을때 초기값으로 값을 돌려준다.
PlayerPrefs.GetInt("키", 초기값);

//예를들어
//레벨 데이터를 가져오고, 만약 레벨 데이터가 없다면 1을 불러온다.
PlayerPrefs.GetInt("level", 1);

//String Float 모두 동일하게 사용가능하다.

 

 

아래는 추가적으로 필요한 기능들!

삭제(Delete)

더 이상 필요가 없는 저장된 키값을 지우고 싶을 때가 있다.

//지우고싶은 데이터 삭제
PlayerPrefs.DeleteKey("키");

//저장되어있는 모든 데이터 삭제
PlayerPrefs.DeleteAll();

해당 데이터가 있는지 확인

//해당 이름을 가진 데이터가 있다면 true
if(PlayerPrefs.HasKey("키"))
    Debug.Log("해당 키가 존재합니다.");

 

반응형

+ Recent posts