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.
Wyzwanie
ŚredniUstaw liczbę skoków jako łączną liczbę z całego okresu, zapisywaną między rozgrywkami.
- W
Update(), pojumps++;, dodajPlayerPrefs.SetInt("TotalJumps", jumps);iPlayerPrefs.Save();. - W
Start(), nadShowJumps();, 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
1Tekst na ekranie
Canvas i tekstWyświetlanie wynikuFormatowanie liczbOdliczanie czasuPowtórka: prędkościomierz2Przyciski i ekrany
Przyciski i onClickLambdyPodłączanie w InspectorzeWłączanie i wyłączanie paneliPaski zdrowiaPodsumowanie: sklep z ulepszeniami5Zapisywanie za pomocą PlayerPrefs
Zapisz liczbęWczytywanie z wartością domyślnąNajlepszy wynikZapisz ustawieniaPodsumowanie: monety w bankuPoćwicz samodzielnie: Edytor online Unity