[Unity]19.PlayerPrefs를 활용한 데이터 저장

안녕하세요 유랑입니다.



이번 시간에는 PlayerPrefs를 활용하여 데이터 저장과 불러오기 기능을 구현해 보겠습니다.

게임을 제작할 때 데이터 저장과 불러오기 기능은 필수 구현 항목이다.

유니티에서 제공해주는 클래스를 이용하여 구현을 해보자.




1. PlayerPrefs



PlayerPrefs 클래스는 유니티에서 제공해주는 데이터 관리 클래스이다.

해당 클래스는 int, float, string, bool 타입의 변수를 저장하고 로드하는 기능을 제공한다.







1-1) 프로젝트 생성 후 설정



프로젝트 이름과 생성 위치를 설정 후 프로젝트를 만들어 주자.






상단 메뉴바 GameObject => UI => Canvas 1개, Panel 1개, InputField 3개, Button 2개를 만들어 주자.

하이라키 뷰를 참고하여 부모 자식관계를 정리하자.





해당 InputField 오브젝트 이름을 변경한 뒤 위치 변경 후

자식오브젝트인 PlaceHolder 텍스트 값을 변경하자.









버튼도 마찬가지로 이름을 변경한 뒤 크기와 위치를 변경하자.








1-2) 스크립트 작성



UI를 사용하기 위해 UnityEngine.UI를 추가하고, 

PlayerPrefs를 이용해 저장과 불러오기 하는방법을 작성하자.

* DeleteAll => 모든 키 값을 삭제

* DeleteKey => 특정 키 값을 삭제

* GetFloat => 지정한 float 타입의 키 값을 로드

* GetInt => 지정한 int 타입의 키 값을 로드

* GetString => 지정한 String 타입의 키 값을 로드

* HasKey => 해당 키가 존재하는 여부를 반환

* Save => 변경된 모든 키 값을 물리적인 저장 공간에 저장

* SetFloat => 지정한 키로 float 타입의 값을 저장

* SetInt => 지정한 키로 int 타입의 값을 저장

* SetString => 지정한 키로 string 타입의 값을 저장







1-3) PlayerPrefs 적용



빈 오브젝트를 만든 후 GameMgr 스크립트를 추가하자.

그리고 InputField 오브젝트들을 해당 속성란에 드래그앤 드랍 시키자.






두 개의 버튼 컴포넌트에 OnClick()이라는 이벤트 함수가 있다.

GameMgr 오브젝트를 드래그앤 드랍하고 해당 메소드로 설정하자.

이제 버튼을 누르면 Save와 Load가 될 것이다.







게임을 실행한 뒤 이름, 나이, 키 값을 입력하고 Save 버튼을 누르자.

그러면 해당 값들이 저장될 것이다. 

저장된 것을 확인하기 위해서 게임을 종료하자.





이번에는 바로 Load 버튼을 누르면 아까 저장된 이름, 나이, 키 값들을 불러 올 것이다.






1-4) PlayerPrefs 저장경로



해당 값들은 Company Name과 Product Name을 바탕으로 저장위치가 정해진다.

레지스트리 편집기를 실행하고 HKEY_CURRENT_USER => SOFTWARE => Unity =>

 UnityEditor => [Company Name] => [Product Name]

해당 위치로 이동하면 Name, Age, Height가 존재한다.







2. 마무리



이번 시간에는 PlayerPrefs 클래스를 이용하여 데이터 저장과 로드하는 방법에 대해서 배웠습니다.

다음 시간에는 라이트 프로브를 이용하여 움직이는 물체를 어떻게 LIghting 효과를 주는지에 대해 배워보겠습니다.

PlayerPrefs를 고대로 사용하면 보안상 문제로 게임데이터가 해킹당할 수 있습니다.

그래서 암호화 또는 JSON과 XML을 이용하여 데이터 저장을 하고 있습니다.

참고하시길 바라며 오늘도 고생하셨습니다.

감사합니다.




교육자료: https://github.com/YouRang12/-Tistory-Unity---Basic


댓글

Designed by JB FACTORY