IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 7 - Unity (C#) Android: GUI - Menu 2

V minulé lekci, Unity (C#) Android: GUI - Menu 1, jsme se zabývali vytvářením GUI kódem.

V dnešním Unity tutoriálu si ukážeme další možnosti jak vytvořit herní menu. Již jsme menu vytvářeli pomocí kódu s trochou programování, tentokrát si jej v podstatě jen naklikáme.

Pro tyto účely si vytvoříme novou scénu, kterou si pojmenujeme Menu2, a otevřeme ji.

Canvas

Abychom si mohli přidat do naší hry pár těch tlačítek, nejdříve musíme do scény přidat Canvas. To je plátno, do kterého vkládáme naše prvky bez programování. Je to vlastně taková placatá obrazovka, kterou do hry vložíme a na které můžeme něco zobrazovat.

Klikneme pravým tlačítkem do prostoru okna Hierarchy a zvolíme UI->Canvas:

Tvorba 2D arkády pro Android v Unity

Společně s Canvas se nám přidá i EventSystem. Ten ponecháme tak, jak je, a prozatím si ho všímat nemusíme.

Nastavení Canvas

Nejdříve si ale náš Canvas musíme nastavit:

Render Mode

Render Mode nám říká, jak chceme, aby se naše okno vykreslovalo.

  • Screen Space - Camera vykresluje vždy na kameru. To znamená, že se prvky "přichytí" ke kameře a hýbou se stejně jako se hýbe kamera. To je vhodné například na různá menu, ukazatele zdraví a podobně.
  • World space se využívá například když chceme, abychom někde ve světě měli texty, obrázky a tak, aniž by byly přichycené na kameru.
  • A ve finále tu máme Screen Space - Overlay. Tento mód funguje podobně jako Screen Space - Camera, ale místo "přichycení se" ke kameře jednoduše vykresluje canvas na obrazovku, jako by pod ní ani nebyla žádná hra. Od obrazu pak nejde nastavit např. nějakou vzdálenost nebo sklon, zkrátka si kamery nevšímá.

My využijeme Screen Space - Camera. V Render Camera musíme určit na jakou kameru se naše prvky přichytí.

Order in Layer

Další podstatná věc, kterou můžeme využít častěji, je Order in Layer. Jelikož můžeme mít Canvas prvků teoreticky neomezeně, tak nám toto číslo říká, jak se mají přes sebe zobrazovat. Čím menší číslo, tím více vespod canvas bude.

UI Scale Mode

Dále, aby naše hra byla hezká na všech velikostech monitorů, musíme zařídit, aby se náš Canvas roztáhl jak potřebujeme. K tomu slouží UI Scale Mode, který nastavíme na Scale With Screen Size. Tím se Canvas roztáhne vždy na velikost monitoru, na kterém hra právě běží. To od menu také očekáváme.

Reference Resolution

Ve finále nastavíme Reference Resolution na rozlišení našeho monitoru. Tím jen říkáme, jaká je referenční velikost monitoru. Pro naše účely tudíž postačí nastavit naše rozlišení, aby se nám pracovalo trochu pohodlněji:

Tvorba 2D arkády pro Android v Unity

Tlačítka

Když již máme nejdůležitější prvky nastavené, můžeme se vrhnout na přidání tlačítek:

Tvorba 2D arkády pro Android v Unity

Po kliknutí na Button se nám zobrazí tlačítko. Když hru spustíme a klikneme, samozřejmě zatím nic nedělá.

Nastavení tlačítka

Pokud přejdeme do inspektoru našeho tlačítka, můžeme si povšimnout pár nastavení. Abychom docílili stejného efektu jako v minulém menu, nastavíme si sprite Source Image na náš požadovaný sprite a následně si Transition nastavíme na Sprite Swap, pokud již tak není nastaveno. To nám zaručí, že se budou měnit sprity pro různé akce. Dále již stačí pouze zvolit jaký chceme Pressed Sprite.

Teď, když scénu spustíme a klikneme na naše tlačítko, vidíme stejný grafický výsledek jako v minulém menu. Jenže stále se nic neděje.

Funkce tlačítka

Pokud se podíváme na samotný spodek Inspectoru tlačítka, můžeme si všimnout okénka s nadpisem On Click(). To je metoda, která se zavolá pokaždé, když je na tlačítko kliknuto. Pokud klikneme na malinké "+" vpravo dole toho okénka, zobrazí se nám možnost nastavit skript, který se má spustit:

Tvorba 2D arkády pro Android v Unity

Pro tyto účely si vždy vytvoříme prázdné GameObjecty, které pojmenujeme podle toho, jaké skripty sdružují a na tyto GameObjecty dáváme skripty na tlačítka.

Jeden takovýto objekt si vytvoříme. Pojmenujeme si ho ScriptObject:

Tvorba 2D arkády pro Android v Unity

Připneme na něj náš Reaction Script:

Tvorba 2D arkády pro Android v Unity

Zároveň, aby naše metody v Reaction Scriptu byly vidět, musíme všechny předělat na public. Je to z toho důvodu, že k našim metodám budeme přistupovat zvenku:

public void ClickedArcade()
{
    print("clicked Arcade");
}

public void ClickedSurvival()
{
    print("clicked Survival");
}

public void ClickedExit()
{
    print("clicked Exit");
}

Když nyní najedeme zas na tlačítko, stačí náš ScriptObject vložit do kolonky None (Object):

Tvorba 2D arkády pro Android v Unity

Dále klikneme na No Function a vybereme si náš skript a požadovanou metodu:

Tvorba 2D arkády pro Android v Unity
Tvorba 2D arkády pro Android v Unity

Aby bylo vše hotovo, stačí již jen změnit text tlačítka. To uděláme rozbalením našeho tlačítka, kde uvidíme Text. Na ten klikneme a můžeme si nastavit požadovaný text na našem tlačítku. Pokud se chceme vyblbnout, můžeme si nastavit dále i fonty, barvy a podobně, nám ale postačí jen text. Tlačítko si pro přehlednost ve scéně pojmenujeme Arcade a také, aby nám názvy tlačítek seděly s minulým tutoriálem. A máme hotovo.

Když scénu spustíme, klikneme na tlačítko můžeme vidět, že se nám do konzole vypisuje požadovaný text ze skriptu. Takovýmto způsobem můžeme naprogramovat libovolné metody s libovolnou funkcí.

Proces zopakujeme pro zbývající dvě tlačítka a výsledek máme naprosto stejný:

Tvorba 2D arkády pro Android v Unity

Závěr

Ještě nevím, jaký způsob vytváření menu a GUI prvků budu volit do dalších lekcí, ale je to v podstatě jedno. Žádný z ukázaných způsobů nemá žádné extra výhody ani nevýhody a někdo může být rád, když si může vše vytvořit sám kódem a mít vše pod kontrolou. Tímto bych dnešní lekci ukončil.

V příští lekci, Unity (C#) Android - MenuPart, Eraser a pozadí, se budeme zabývat odstraňováním již zdolaných překážek a také nekonečným opakováním pozadí. Přidáme i další herní menu.


 

Předchozí článek
Unity (C#) Android: GUI - Menu 1
Všechny články v sekci
Tvorba 2D arkády pro Android v Unity
Přeskočit článek
(nedoporučujeme)
Unity (C#) Android - MenuPart, Eraser a pozadí
Článek pro vás napsal Jan Kubice
Avatar
Uživatelské hodnocení:
2 hlasů
Aktivity