반응형
로컬에 데이터를 저장하는 방법은 여러 가지가 있습니다.
저는 저장될 내용에 따라 JSON, 바이너리, PlayerPrefs 등 혼용해서 많이 쓰는데요.
그중 이번에는
아마도 유니티 내에서 가장 간단한 PlayerPrefs를 활용해볼까 합니다.
PlayerPrefs
일단 알아 두셔야 할 점은,
-간편하게 관리할 수 있다는 점.
-간편하고 쉬운만큼 보안성은 개나 줘 버려서 없음. (저장 위치의 파일을 열어보면 날 것 그대로의 값이..)
위 같은 이유로 중요한 데이터는 웬만해서는 이 방법을 추천하지 않습니다.
보통, 게임 옵션의 세팅 정보 (BGM, Sound의 볼륨 크기, 진동 유무) 정도로 사용하시는 게 적당하지 않을까 싶네요.
(만약 정말 만약 PlayerPrefs를 활용해서 중요한 게임 데이터를 저장코자 한다면,
꼭 저장 전에 암호화한 값을 저장해주세요. 암호화는 나중에 한 번 다뤄 보도록 하겠습니다.)
PlayerPrefs은 기본적으로 Int / Float / String의 변수 타입을 지원합니다.
(배열을 간혹 저장해야 할 때가 있는데 배열을 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("해당 키가 존재합니다.");
반응형
'개발 & 강의 > Unity' 카테고리의 다른 글
[유니티UI] Tab 탭 버튼과 메뉴 간단하게 만들기 +예제 (0) | 2023.11.11 |
---|---|
[유니티]바로써먹자, Factory 패턴에 대한 소개 및 예제 (0) | 2023.09.26 |
[유니티UI] 레이아웃 크기에 맞춰 자동 크기 조절 ContentSizeFitter 예제 (0) | 2023.09.17 |
[유니티] float to ToString() 소수점 자리 표시 / 콤마(,)표시 (0) | 2020.12.31 |
유니티-싱글톤패턴(Singleton) 설명 및 스크립트 예제 (0) | 2020.12.20 |