Diskuze: Čas v programu C# a Unity
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 8 zpráv z 8.
//= 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.
většinou se to řeší tak, že máš nějakou float proměnnou, která měří uplynulý čas a prostě do ní v každým updatu přičítáš uniťáckej Time.deltaTime
Případně se to ještě dá řešit přes coroutine .
Ak chceš, aby nejaký efekt postupne prebiehal určitý čas (napr. postupné stmavovanie obrazovky počas 3 sekúnd), tak sa to dá jednoducho spraviť cez coroutine - tých nájdeš veľa použitých aj v oficiálnych Unity tutoriáloch. Tam si vieš samozrejme nastaviť aj rôzne vetvenie a hrať sa s tým (napr. po krokoch postupne stmavuj a ak je obrazovka už úplne čierna, počkaj sekundu a potom začni efekt postupne odstraňovať).
Keby si niekedy potreboval pracovať s časom od spustenia hry, tak cez triedu Time (najčastejšie vlastnosť Time.time).
Posledná rada, kým v programovaní nepokročíš dosť na to, aby si vedel čo je Thread a na čo sa používa, tak to nerob. Budeš mať značne menej problémov v živote, či už v Unity alebo v projektoch mimo neho. A aj keď viacvláknové programovanie zvládneš, Unity API nie je thread safe a engine si agresívne vynucuje, aby si takmer všetko držal v hlavnom vlákne (ak si tejto vete rozumel tak fajn, ak nie, nevadí).
Asi rozumím. Taky se mi právě zdálo divné kvůli jednomu příkazu přidávat nahoře celou, teď nevím, jak se tomu říká
Ještě jsem našel v poznámkách funkci Invoke.
Invoke sa používa na to, keď chceš jednorazovo (per invoke call) vykonať nejakú metódu s daným časovým odstupom.
Fajn príklad je napr. to, keď v hre zničíš nepriateľa, prehrá sa nejaká animácia smrti / výbuchu / whatever a s tým, ako spustíš tú animáciu, tak zavoláš s časovým odstupom cez Invoke zničenie gameobjectu toho nepriateľa. V pseudokóde niečo ako
void Umri()
{
animace.Prehraj();
Invoke("Znic", animace.Delka);
}
void Znic()
{
Destroy(this.gameObject);
}
Jestli to chápu správně, tak to je to, co asi zrovna potřebuji. Generátor náhodných čísel v metodě Hod mi vygeneruje číslo hned, ale já bych ho potřeboval až po přehrání animace točení kostky. Aby se hráč nepohyboval dříve, než se kostka dotočí a ukáže uživateli číslo.
Zobrazeno 8 zpráv z 8.