Menu
CoddyTech

기본값으로 불러오기

Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 60개 중 23번째.

한 번도 저장되지 않은 키를 읽으면 0이 반환되며, 일부 값은 0에서 시작하기에 적절하지 않습니다. 레이싱 게임에서 플레이어는 경주에 참가할 컴퓨터 라이벌의 수를 선택할 수 있고, 새 플레이어는 3명과 경주해야 합니다. 모든 Get은 두 번째 인수인 기본값을 받으며, 키가 없을 때 이 값을 반환합니다:

int rivals = PlayerPrefs.GetInt("Rivals", 3);
string driver = PlayerPrefs.GetString("Driver", "Rookie");

플레이어가 혼자 연습하기 위해 라이벌 수를 0으로 저장하면 GetInt("Rivals", 3)은 0을 반환합니다. 기본값은 키가 없을 때만 채워집니다. 따라서 if (rivals == 0) rivals = 3;은 기본값을 지정하는 잘못된 방법입니다. 저장된 0과 아무것도 저장되지 않은 상태를 구분할 수 없고, 연습 경주마다 라이벌 3명을 다시 설정하게 됩니다.

PlayerPrefs.HasKey(key)는 값이 무엇이든 키가 저장된 적이 있는지 알려 주므로, 첫 게임인지 그 이후 게임인지 구분할 수 있습니다. 이 게임은 새로운 드라이버에게 인사합니다:

void Start()
{
    if (!PlayerPrefs.HasKey("Driver"))
    {
        Debug.Log("First race! Pick a name in the garage.");
    }
    string driver = PlayerPrefs.GetString("Driver", "Rookie");
    Debug.Log("Driver: " + driver);
}

키를 저장하는 코드를 실행하기 전에 HasKey를 확인하세요. 처음 저장한 뒤부터는 PlayerPrefs.DeleteKey로 키를 삭제할 때까지 true를 반환합니다.

challenge icon

챌린지

중급

새 플레이어에게 무료 크레딧 5개와 환영 메시지를 제공하세요.

  1. Start()에서 기본값을 지정해 불러오세요: credits = PlayerPrefs.GetInt("Credits", 5);.
  2. welcomeText.SetActive(false);를 welcomeText.SetActive(!PlayerPrefs.HasKey("Credits"));로 바꾸세요.

‘플레이’를 눌러 게임을 한 다음, 중지를 누르고 ‘플레이’를 누르세요. 환영 메시지가 사라집니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;
using TMPro;

public class ArcadeCredits : MonoBehaviour
{
    public TMP_Text creditsText;
    public GameObject welcomeText;
    private int credits;

    void Start()
    {
        credits = PlayerPrefs.GetInt("Credits");
        welcomeText.SetActive(false);
        ShowCredits();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space) && credits > 0)
        {
            credits--;
            PlayerPrefs.SetInt("Credits", credits);
            PlayerPrefs.Save();
            ShowCredits();
        }
    }

    void ShowCredits()
    {
        creditsText.text = "Credits: " + credits;
    }
}

실제 게임 만들기의 모든 레슨

직접 연습해 보세요: Unity 플레이그라운드