Wczytywanie z wartością domyślną
Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 23 z 60.
Klucz, który nigdy nie został zapisany, odczytuje się jako 0, a 0 to kiepska wartość początkowa dla niektórych wartości. Gra wyścigowa pozwala graczowi wybrać, ilu komputerowych rywali weźmie udział w wyścigu, a nowy gracz powinien ścigać się z 3 rywalami. Każde wywołanie Get przyjmuje drugi argument, wartość domyślną, którą zwraca, gdy brakuje klucza:
int rivals = PlayerPrefs.GetInt("Rivals", 3);
string driver = PlayerPrefs.GetString("Driver", "Rookie");Gdy gracz zapisze 0 rywali, aby ćwiczyć w pojedynkę, GetInt("Rivals", 3) zwróci 0: wartość domyślna uzupełnia tylko brakujący klucz. Dlatego if (rivals == 0) rivals = 3; to niewłaściwy sposób ustawiania wartości domyślnej. Nie potrafi odróżnić zapisanego 0 od braku zapisu i przywraca 3 rywali w każdym wyścigu treningowym.
PlayerPrefs.HasKey(key) informuje, czy klucz został kiedykolwiek zapisany, niezależnie od jego wartości, dzięki czemu pozwala odróżnić pierwszą rozgrywkę od kolejnej. Ta gra wita nowego kierowcę:
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);
}Sprawdź HasKey przed jakimkolwiek kodem zapisującym klucz: od pierwszego zapisu zwraca ono true, dopóki klucz nie zostanie usunięty za pomocą PlayerPrefs.DeleteKey.
Wyzwanie
ŚredniPrzyznaj nowemu graczowi 5 darmowych żetonów i wyświetl powitanie.
- W
Start()wczytaj wartość z domyślną:credits = PlayerPrefs.GetInt("Credits", 5);. - Zastąp
welcomeText.SetActive(false);przezwelcomeText.SetActive(!PlayerPrefs.HasKey("Credits"));.
Naciśnij „Graj” i zagraj w grę, a następnie naciśnij Stop i „Graj”: powitanie zniknie. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
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;
}
}
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