Menu
CoddyTech

Zapisz liczbę

Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 22 z 60.

Każde pole przyjmuje wartość domyślną po uruchomieniu gry. Gracz, który zbierze 40 klejnotów, wyjdzie z gry i wróci jutro, zobaczy, że liczba klejnotów wynosi 0, ponieważ wyjście kończy grę i wszystko, co się w niej znajduje. PlayerPrefs przechowuje niewielkie wartości na urządzeniu gracza między kolejnymi rozgrywkami. Każda wartość jest zapisywana pod kluczem — wybranym przez Ciebie ciągiem znaków — za pomocą SetInt, SetFloat lub SetString:

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

Aby odczytać wartość, wywołaj metodę Get tego samego typu, używając tego samego klucza. Odczyt klucza, który nigdy nie został zapisany, zwraca 0, 0 lub pusty ciąg znaków, więc podczas pierwszej rozgrywki gracza ten komunikat powitalny wyświetla pustą nazwę i poziom 0:

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

Wielkość liter w kluczach ma znaczenie: GetInt("levelreached") odczytuje klucz, który nigdy nie został zapisany, i zwraca 0. Klucz przechowuje jedną wartość określonego typu, więc odczytuj go za pomocą metody Get odpowiadającej użytej metodzie Set. Zapisuj wartość, gdy się zmienia, a nie dopiero po zakończeniu gry. Unity zapisuje PlayerPrefs na dysku przy normalnym wyjściu z gry, a PlayerPrefs.Save() zapisuje je natychmiast, dzięki czemu awaria nie spowoduje ich utraty. Pole static nie rozwiązuje tego problemu: istnieje tak długo, jak działa gra, a wyjście z gry kończy również jego istnienie.

challenge icon

Wyzwanie

Średni

Ustaw liczbę skoków jako łączną liczbę z całego okresu, zapisywaną między rozgrywkami.

  1. W Update(), po jumps++;, dodaj PlayerPrefs.SetInt("TotalJumps", jumps); i PlayerPrefs.Save();.
  2. W Start(), nad ShowJumps();, wczytaj ją: jumps = PlayerPrefs.GetInt("TotalJumps");.

Naciśnij „Graj” i skacz, a następnie Stop i ponownie „Graj”: licznik będzie dalej naliczał skoki. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

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;
    }
}

Wszystkie lekcje w sekcji Tworzenie prawdziwych gier

Poćwicz samodzielnie: Edytor online Unity