Diskuze: Počítanie Spustenia hry
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Nefunguje mi pičítadlo spustený hry
Launch stale mi ukazuje 0.
Ono by sa to malo pričitovat po každom spustený hry.
a kam ten počet ukládáš?
Podle mě se vždycky při spuštění nastaví
int launch = 0;
pak se přičte
launch++;
a při ukončení se ta hodnota zase ztratí...
čím se spouští toto:
void Awake()
{
launch++;
}
?
launch ukladám v
void OnDestroy()
{
PlayerPrefs.SetInt ("S", starts);
PlayerPrefs.SetInt ("J", jumps);
PlayerPrefs.SetInt ("D", deads);
**PlayerPrefs.SetInt ("L", launch);**
}
OnDestroy sa urobí keď zatvoríš aplikáciu.
A v Starte hodnotu launchu nahrávam.
void Start()
{
starts = PlayerPrefs.GetInt ("S");
jumps = PlayerPrefs.GetInt ("J");
deads = PlayerPrefs.GetInt ("D");
**launch = PlayerPrefs.GetInt ("L");**
starts++;
}
void Awake() sa spraví iba raz. Keď sa otvorí skript.
PS: Ostatné hodnoty pracujú správne.
Mě šlo spíš o to, kde se ta hodnota toho "launch" uchovává?
Při novém načtení hry by se od tamtud měla vytáhnout a pak přičíst
(++), ale podle mě se vždy při spuštění nastaví na 0
http://www.zive.cz/…default.aspx
Jedno z řešení .
PZ
launch sa ukladá v
PlayerPrefs.SetInt ("L", launch);
a nahrava sa v
launch = PlayerPrefs.GetInt ("L");
Ano, to vidím, ale to je za běhu programu.
A po ukončení programu ta hodnota "launch" zůstane někde zachovaná?
Potřebuješ mít napříkad externí soubor s daty, někde kde to číslo zůstane uchované, třeba v XML,SQl,textáku atd..Kam program když se spustí vstoupí přečte si hodnotu a přičte k ní jedna a zase ho uloží. Teda to je jediný způsob, jak to řeším já, ale je funkční.
Pokud se nepletu, tento člověk pracuje v Unity. A v Unity funguje PlayerPrefs jako funkce jenž ukládá zadaná data do registrů. Takže problém není v ukládání dat, ale v jejich zpracování. Takže: Problém je v tom, že autor evidentně nezvládá základy Unity.. Vezmeme si postupně, co se ve skriptu stane s proměnou Launch:
V prvním kroku je nastavena na 0.
Což je v pohodě, protože později se má načíst pomocí PlayerPrefs..
Ve druhém kroku, (Ve funkci Awake) se nastaví její hodnota na 1..
Což je také v pohodě, to přeci chceme... Nebo ne?
Samozřejmě že ne... Protože ve třetím kroku nahrajeme hodnotu uloženou v registrech.. (Funkce Start se totiž zavolá až po funkci Awake!).. Takže načteme hodnotu 0..
A jsem v jádru problému... Ať máme v proměnné Launch cokoli, po tomto kroku máme vždy opět 0..
A v posledním kroku si proměnou Launch = 0 pro jistotu ještě uložíš...
Příště prosím zkus používat Debug funkce místo dotazování se naprostých základů...
Dobre vďaka za kritiku
V podstate by to malo vypadať takto
void Awake()
{
launch = PlayerPrefs.GetInt ("L");
launch++;
}
void OnDestroy()
{
PlayerPrefs.SetInt ("L", launch);
}
Ale mám problém ked reštartujem level tak sa Awake ubobí opať ako to opravím?
Potrápil som mozoček a použil som staic bool tak to už ide
Zobrazeno 13 zpráv z 13.