Błąd przy zapisach PlayerPrefs

Programowanie w Unity.

Błąd przy zapisach PlayerPrefs

Postprzez WiksterRvN » 23 Lis 2018, 18:00

Zacznijmy od tego że jestem nowicjuszem w programowaniu i poznaje podstawy dopiero.
Postanowiłem stworzyć prostą grę ''Clicker'' okazało się że to nie takie proste(dla mnie).
Poczytałem na necie i oto znalazłem PlayerPrefs.
Mam tylko dwie wartości do zapisania i wczytania a jest problem.
Jedna wartość zamienia się z drugą. Załączam skrypt

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Click : MonoBehaviour
{
public Button ButtonClick;
public Text TextPieniedzy;
public Text TextBux;
public string Bux;

public float Pieniądze;
public int PercClick = 1;

public string Money;
public string ClickPer;

void Start ()
{
//Loader
Pieniądze = PlayerPrefs.GetFloat(Money);
PercClick = PlayerPrefs.GetInt(ClickPer);
}


void Update ()
{
TextPieniedzy.text = Pieniądze + " Pkt.MMA";
TextBux.text = Bux + " Zapięć roweru";

//Saver
PlayerPrefs.SetFloat(Money, Pieniądze);
PlayerPrefs.SetFloat(ClickPer, PercClick);
Debug.Log(Pieniądze);

}
public void OnClick()
{
Pieniądze += PercClick;
}
}
Ostatnio edytowany przez WiksterRvN, 24 Lis 2018, 13:05, edytowano w sumie 1 raz
WiksterRvN
 
Posty: 7
Rejestracja: 23 Lis 2018, 17:49
Has thanked: 0 time
Been thanked: 0 time

Re: Błąd przy zapisach PlayerPrefs

Postprzez Hostur » 23 Lis 2018, 21:19

Źle się to czyta, zwłaszcza jeśli zaczynasz to zacznij od tego żeby nie korzystać z żadnych polskich słów w kodzie.

Kod możesz wklejać ze znacznikami
(code)
(/code)
tylko nawiasy kwadratowe zamiast okrągłych.

Nie ma Ci się co tutaj zamienić, jest tutaj dużo problemów ale skupiając się na twoim przede wszystkim brakuje Ci wywołania PlayerPrefs.Save() po wpisaniu wartości.

Uważaj jednak bo robisz to w pętli update a playerprefs jest zapisem do pliku (to jest kosztowna operacja).

Czy skoro PercClick jest = 1 i jest intem to jest sens żeby Pieniądze były floatem? Czy mogą tam wystąpić liczby niecałkowite ?
Hostur
 
Posty: 696
Rejestracja: 05 Sie 2015, 07:36
Has thanked: 0 time
Been thanked: 0 time

Re: Błąd przy zapisach PlayerPrefs

Postprzez WiksterRvN » 23 Lis 2018, 22:04

To czy jest jakiś inny sposób na zapisanie i wczytanie automatycznie tych dwóch wartośći?
I Pieniadze muszą być float ponieważ w innym skrypcie potem mi się miesza z funkcją Math.
WiksterRvN
 
Posty: 7
Rejestracja: 23 Lis 2018, 17:49
Has thanked: 0 time
Been thanked: 0 time

Re: Błąd przy zapisach PlayerPrefs

Postprzez Hostur » 24 Lis 2018, 11:57

pytanie czy musisz je zapisywać co klatkę? nie możesz tego robić rzadziej ?
Hostur
 
Posty: 696
Rejestracja: 05 Sie 2015, 07:36
Has thanked: 0 time
Been thanked: 0 time

Re: Błąd przy zapisach PlayerPrefs

Postprzez WiksterRvN » 24 Lis 2018, 12:54

Właściwie nie muszę ale jak zrobić żeby zapisywał się na przykład na wyjściu z aplikacji?
WiksterRvN
 
Posty: 7
Rejestracja: 23 Lis 2018, 17:49
Has thanked: 0 time
Been thanked: 0 time

Re: Błąd przy zapisach PlayerPrefs

Postprzez Hostur » 24 Lis 2018, 12:58

Hostur
 
Posty: 696
Rejestracja: 05 Sie 2015, 07:36
Has thanked: 0 time
Been thanked: 0 time

Re: Błąd przy zapisach PlayerPrefs

Postprzez WiksterRvN » 24 Lis 2018, 13:01

Czy jeżeli postawie grę na Adroida to czy skrypt też będzie wykrywał zamknięcie aplikacji?
WiksterRvN
 
Posty: 7
Rejestracja: 23 Lis 2018, 17:49
Has thanked: 0 time
Been thanked: 0 time

Re: Błąd przy zapisach PlayerPrefs

Postprzez WiksterRvN » 24 Lis 2018, 13:18

Zrobiłem osobny skrypt do zapisu
Wartość PercClick zapisuje odpowiednio, ale wartość Money(wcześniej Pieniadze) ustawia za każdym razem na 0

Kod: Zaznacz wszystko
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerPref : MonoBehaviour
{
    Click Click;
    public string MoneySave;
    public string ClickPer;

   void Start ()
    {
        Click = GetComponent<Click>();

        Click.Money = PlayerPrefs.GetFloat(MoneySave);
        Click.PercClick = PlayerPrefs.GetInt(ClickPer);
    }

   
   void Update ()
    {
        Debug.Log(Click.Money);
   }
    void OnApplicationQuit()
    {
        Click = GetComponent<Click>();

        PlayerPrefs.SetFloat(MoneySave, Click.Money);
        PlayerPrefs.SetInt(ClickPer, Click.PercClick);
        PlayerPrefs.Save();

        Debug.Log("Aplikacja zamknie się za " + Time.time + " sekund");
    }

}
WiksterRvN
 
Posty: 7
Rejestracja: 23 Lis 2018, 17:49
Has thanked: 0 time
Been thanked: 0 time

Re: Błąd przy zapisach PlayerPrefs

Postprzez Hostur » 24 Lis 2018, 15:22

Postaw brake pointa i zobacz co siedzi w Click.Money może masz tam 0
albo dodaj debug przed setfloat

Nie musisz wołać getcomponent<click> bo w zmiennej Click masz już ten komponent przy zamknięciu apki, wyciągasz go w starcie
Hostur
 
Posty: 696
Rejestracja: 05 Sie 2015, 07:36
Has thanked: 0 time
Been thanked: 0 time

Re: Błąd przy zapisach PlayerPrefs

Postprzez WiksterRvN » 25 Lis 2018, 21:55

Przepraszam że pewnie mieszam ale problem jest w tym że Money przy zapisie podmienia zapis PercClick po czym na starcie ustawia PercClick na ostatnio zapisane Money
WiksterRvN
 
Posty: 7
Rejestracja: 23 Lis 2018, 17:49
Has thanked: 0 time
Been thanked: 0 time

Następna

Wróć do Skrypty

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 1 gość

cron