C#/Unity

0

Robię sam dla siebie gierkę w stylu opiekowania się zwierzątkiem. W poradach, poradnikach widzę coś takiego jak :

if (!PlayerPerfs.HasKey ("_hunger"))
{
PlayerPerfs.HasKey("_hunger") 
{
_hunger = 100;
PlayerPerfs.SetInt ("_hunger" , _hunger);
else
{
PlayerPerfs.GetInt ("_hunger")
}
}

To jest służy do dodania wartości głodu ale nie do końca rozumiem o co w tym chodzi. Czy jest ktoś w stanie wytłumaczyć pokrótce z czym to się je?

1

W skrócie PlayerPrefs służy między innymi do przechowywania wartości pomiędzy sesjami. Czyli innymi słowy możesz grać, później wyłączyć komputer i gdy wejdziesz sobie jeszcze raz do gry to wartości będą zachowane dzięki właśnie użyciu PlayerPrefs.

W powyższym kodzie jest przechowywana wartość _hunger (zapewne zwierzaka) i dzięki temu zastosowaniu jest współdzielona między sesjami gry

0

Na początku kod sprawdza, czy w "bazie danych" jest jakaś wartość pod kluczem _hunger.
Jeśli nie ma to znaczy, że ktoś pierwszy raz uruchomił Twoją grę i trzeba nadać wartość początkową tego klucza i wpisać go do bazy.
Jeśli jest jakaś wartość pod kluczem _hunger, to po prostu wczytujemy ją, GetInt chciałbyś zapisać sobie do jakiejś zmiennej, bo teraz pobieranie tej wartości większego sensu nie ma.

Moim zdaniem nie warto budować swojej gry na PlayerPrefs. A nawet jeśli to z głową, a nie dla każdej wartości klonując formułkę z Twojego posta...
Ja w swoich projektach po prostu mam klasę w której przechowuję zapisywane dane i ją serializuję do pliku. Jeśli dana klasa ma za dużo danych to dzielę ją na mniejsze pod konkretne zadania. Np. nie chcę, żeby wszystkie itemy ze sklepiku były zapisywane za każdym razem, kiedy zapisuję highscore :D

Chyba jak zaczynałem, to skorzystałem z tego:

https://gamedevelopment.tutsplus.com/tutorials/how-to-save-and-load-your-players-progress-in-unity--cms-20934

Działa do dzisiaj ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1