úterý 24. května 2016

Teach Vision: První hra v Unity část I.

Následující text je návod pro úplného začátečníka, který se v Unity stihl pouze lehce zorientovat - čili něco málo tuší, ale neví ještě jak na TO. Z několika důvodů, také proto, že jde o můj úplně první návod, jsem se rozhodl jej vydat na části. Další část naváže poměrně rychle, takže se nebojte dlouhé pomlky, nic takového. Kódovat budeme v jazyku Unityscript, podobající se javascriptu, který je myslím velmi šetrný pro kodéra-začátečníka. První část pojme kratičkou teorii. V další se již pustíme do našeho kódu, se kterým si "postavíme" hru Pexeso. Již příště se budete muset pekelně se soustředit, dnes jen prolítneme pár základních pouček.

CO MÍT NA PAMĚTI PŘI PSANÍ KÓDU V UNITY

V Unity máme dvě základní funkce: Start() a Update(). Ve funkci Start() se spustí kód jen jednou (v rámci jediného časového políčka), a to na začátku. Zato kód ve funkci Update() spouští program neustále, tj. podle vašeho aktuálního FPS - např. šedesátkrát za sekundu v případě, že vaše hra běží v 60 FPS.

Funkcí je v Unity samozřejmě více. Pak je tu možnost mít svoje vlastní funkce, které si vytvoříme (a libovolně pojmenujeme). Kód v těchto našich funkcích můžeme volat (říci programu, aby ho spustil) ze základních funkcí, takže pokud chceme, aby začalo ve hře pršet hned na začátku, můžeme napsat:

function Start()
{   
prsi = true;
}

ANEBO

function Start()
{   
   ZacniPrset();
}

function ZacniPrset()
{   
   prsi = true;
}

Průběh čtení kódu probíhá seshora dolů, což si můžeme vysvětlit na příkladu:
function Start()
{
    var prsi : boolean;
    prsi = true;
    prsi = false;
}
Po spuštění kódu neprší, a to proto, že jsme proměnnou prsi přepsali ve třetím řádku na false.

Pokud spustíme vlastní funkci z funkce Update(), je třeba říct programu, aby ji spustil jen jednou (!) a pak už nikoli. Pokud by ji spouštěl neustále, bylo by to zaprvé k ničemu (proč programu neustále říkat, aby pršelo, když už prší?), zadruhé by program možná neběžel tak rychle, protože CPU by se muselo neustále zabývat spouštěním této funkce dokola. Aby se kód spustil z Update() jen jednou, toho docílíme vcelku jednoduše: dosazením podmínky if pro spuštění kódu:
var prsi : boolean = true; // inicializace proměnné a definice její hodnoty
          var destnikRozdelan : boolean; // logická proměnná je bez definice vždy false
function Update()
{
    if(prsi == true) // podmínka
    {
         RozdelatDestnik(); // jen pokud je splněna podmínka, tento kód se přečte.
    }
}
function RozdelatDestnik() // vlastní funkce
{
    prsi = false; //podmínka se neguje, aby nedošlo k dalšímu spuštění této funkce ve                                 // funkci Update()
    destnikRozdelan = true;
}
Pokud budeme chtít funkci RozdelatDestnik() kdykoli znovu přehrát, stačí přepnout proměnnou prsi na true.

V Unity se setkáte s jedním a dvěma rovná se. Rozdíl mezi nimi je takovýto:

Jedno "rovná se" použijeme jen v těch případech, kdy chceme přiřknout proměnné hodnotu.

Některé druhy proměnných a jejich hodnota:

Celé číslo: int = 2;
Desetinné číslo: float = 1.2;
Logický datový typ: boolean = true;
Textový řetězec: String = "Text";

Dvě "rovná se" použijeme jen v podmínce:
if(prsi == true) 
{ 
    SpustTutoFunkci(); 
}

Proměnné většinou zapisujeme (resp. inicializujeme) na první řádky skriptu, před funkci Start(). Inicializovat proměnnou lze v kódu jen jednou.

Každý příkaz je nutné zakončit středníkem.

Název proměnné píšeme vždy pouze s malým počátečním písmenem, u funkcí je to vždy naopak, čili s velkým písmenem.

Přehlednost je nadevše. Doporučuji nepsat do funkce Update() přímo kód, ale raději odkaz na vámi vytvořenou funkci. Díky tomu se později kód mnohem lépe upravuje:

          var zapniSvetlo : boolean;
function Update()
{
    ZapnoutSvetlo();
}
function ZapnoutSvetlo()
{
    zapniSvetlo = true;
}
zeal

0 komentářů:

Okomentovat