상세 컨텐츠

본문 제목

유니티 PlayerPrefs 를 이용한 간단한 데이터 저장

프로그래밍/유니티

by 개발자입니다 2020. 8. 12. 03:21

본문

728x90
반응형

오랜만의 포스팅입니다! 오늘은 유니티 C# 스크립트 함수 중에서 PlayerPrefs를 이용하였습니다.

PlayerPrefs 함수는 간단하게 데이터를 저장하는 방법으로 캐릭터의 좌표, 점수, 체력 등을 이용하는데 편하게 사용이 가능 합니다. 


각 함수 내용을 간단하게 설명하자면 PlayerPrefs는 Get 과 Set 그리고 뒤에 사용 가능한 변수로는 int, float, string 형이 있습니다. 

  ex) SetInt, SetFloat, SetString, GetInt, GetFloat, GetString 등등..


그리고 PlayerPrefs.HasKey 를 통해 지정한 키 값의 데이터가 존재 하는지도 파악이 가능합니다.


아래는 간단한 예제와 함께 풀이를 써보았습니다.

필자는 두 개의 Text UI 를 만들어 시각적으로 보이게 하였습니다.

Text UI를 만들고 부모의 오브젝트에 스크립트를 컴포넌트 합니다. 












using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.UI;


public class BeforeScore : MonoBehaviour

{

    public Text beforeScoreObj;            //Text 변수 선언

    public Text newScoreObj;               //Text 변수 선언


    int beforeScore;                           //int 변수 선언

    int newScore;                              //int 변수 선언


    // Start is called before the first frame update

    void Start()

    {

        Debug.Log("++++++++++++++++++++");


        //HasKey는 스트링형 키값을 통해 데이터가 참, 거짓 존재하는지 알려줌.

        if (PlayerPrefs.HasKey("beforeScore"))

        {

            //int 값에 GetInt함수 사용하여 데이터 불러오기.

            beforeScore = PlayerPrefs.GetInt("beforeScore");    //키값 beforeSocre의 PlayerPrefs를 int형 변수 저장

            beforeScoreObj.text = beforeScore.ToString();

            Debug.Log("beforeScore :: " + beforeScore);

        }


 //새로운 점수 판에 랜덤 값 주기

        newScore = Random.Range(1, 10);

        newScoreObj.text = newScore.ToString();

        Debug.Log("newScore :: " + newScore);

        

        PlayerPrefs.SetInt("beforeScore", newScore);  //highScore라는 키값에 newScore 값 지정하기.

        PlayerPrefs.Save();                                   //지정한 데이터 저장하기.

    }

}



이후 프로젝트를 실행 하고 종료를 반복 하면 아래의 콘솔 창에 다음과 같은 로그 값을 확인 가능합니다. 처음 점수는 0으로 시작하여, 새로운 점수가 누적되면 다음 실행 시 이전의 누적된 점수가 beforeScore로, 새로운 점수가 newScore로 저장되는 것을 확인할 수 있습니다. 



위와 같이 오늘은 PlayerPrefs의 사용 방법을 알아보았습니다. 위 스크립트를 조정하여 이전 점수와 새로운 점수를 비교한다면 높은 점수를 채택하는 방법도 있겠습니다. 감사합니다.

728x90
반응형

관련글 더보기

댓글 영역