Menu
CoddyTech

숫자 저장하기

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

게임이 시작되면 모든 필드는 기본값으로 시작합니다. 보석 40개를 모은 플레이어가 게임을 종료하고 다음 날 다시 돌아오면, 게임을 종료하면 게임과 그 안의 모든 것이 끝나기 때문에 보석 개수가 0으로 표시됩니다. PlayerPrefs는 게임 간에 플레이어 기기에 작은 값을 저장합니다. 각 값은 SetInt, SetFloat 또는 SetString을 사용해 원하는 문자열인 키에 저장됩니다:

PlayerPrefs.SetString("PlayerName", "Robin");
PlayerPrefs.SetInt("LevelReached", 4);
PlayerPrefs.SetFloat("HoursPlayed", 2.5f);
PlayerPrefs.Save();

값을 다시 읽으려면 같은 키와 같은 형식의 Get을 호출하세요. 저장된 적 없는 키를 읽으면 0, 0 또는 빈 문자열이 반환되므로, 플레이어의 첫 게임에서는 이 인사말에 이름이 비어 있고 레벨은 0으로 표시됩니다:

void Start()
{
    string player = PlayerPrefs.GetString("PlayerName");
    int level = PlayerPrefs.GetInt("LevelReached");
    Debug.Log(player + " is on level " + level);
}

키는 대소문자를 구분합니다. GetInt("levelreached")는 저장된 적 없는 키를 읽으므로 0을 반환합니다. 하나의 키에는 한 가지 형식만 저장할 수 있으므로, 키를 저장할 때 사용한 Set과 일치하는 Get으로 읽으세요. 게임이 끝날 때만이 아니라 값이 바뀔 때 저장하세요. Unity는 게임이 정상적으로 종료될 때 PlayerPrefs를 디스크에 기록하며, PlayerPrefs.Save()는 즉시 기록하므로 충돌이 발생해도 값이 사라지지 않습니다. static 필드도 해결책이 아닙니다. 게임이 실행되는 동안에만 유지되며, 게임을 종료하면 그것도 끝납니다.

challenge icon

챌린지

중급

Hopper의 JumpCounter는 화면에 점프 횟수를 표시하지만, 횟수는 일반 필드이므로 새 게임을 시작할 때마다 다시 Jumps: 0부터 시작합니다. 게임을 다시 시작해도 이어지는 평생 누적 횟수로 만들어 보세요.

  • 점프할 때마다 jumps를 PlayerPrefs.SetInt를 사용해 TotalJumps 키에 저장하고, PlayerPrefs.Save()를 사용해 디스크에 기록하세요.
  • Start()에서 텍스트에 표시하기 전에 저장된 누적 횟수를 jumps에 불러오세요.

Play를 누르고 몇 번 점프한 다음, Stop을 누르고 다시 Play를 누르세요. 횟수가 이어집니다. 그런 다음 Check를 누르세요.

직접 해보기

using UnityEngine;
using TMPro;

public class JumpCounter : MonoBehaviour
{
    public TMP_Text jumpsText;
    public float hop = 5f;
    private Rigidbody rb;
    private int jumps;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        ShowJumps();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            rb.linearVelocity = Vector3.up * hop;
            jumps++;
            ShowJumps();
        }
    }

    void ShowJumps()
    {
        jumpsText.text = "Jumps: " + jumps;
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

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