30# 1942 Classic 17.
V dnešní lekci, Game Over a Menu. Začneme vytvořením nového C# scriptu Level.cs. Otevřeme si ho ve Visual studiu a budeme vytvářet 3 funkce. LoadGame, LoadGameOver a LoadMenu. Všechny 3 budou veřejné funkce a budeme je volat z tlačítek nebo na základě události ve hře.
Aby jsme mohli ovládat scény musíme používat UnityEngine.SceneManagement. V buildu hry si později nastavíme pořadí jednotlivých obrazovek hry, ale budeme předpokládat, že první bude Menu, druhý bude Game a třetí bude GameOver. Proto můžeme používat pořadí scén pro jejich volání.
Uložíme a vrátíme se do Unity. Nyní musíme připojit náš script na herní object, jinak by nebyla možnost ho zapnout. Přidáme prázdný object SceneLoader, a připojíme mu script Level jako Component. Nyní si můžeme Uložit scénu jako další dvě (Menu a GameOver) a vystříhat z nich části, které nechceme (hráče, nepřátele) ale naopak si tam můžeme nějaké části nechat (pozadí, hvězdy…). Pravé tlačítko na naší “SampleScene”, ze které později uděláme “Game”. Vybereme “Save scene as” a uložíme ji jako Menu a GameOver. Poté v Assets -> Scenes můžeme přejmenovat SampleScene na Game.
Otevřeme si Menu a začneme mazat. Můžeme si ve scéně nechat jen Background, Main Camera, Canvas, EventSystem, Stars a SceneLoader. Nyní můžeme přidat texty a tlačítko. Můžete přidat jak hru ovládat / co je cílem a rozhodně jméno hry. Pokud chcete hru psát v angličtině můžete použít Da font, což je asi největší knihovna fontů. Pokud plánujete použít češtinu doporučuji například České fonty.
Jediná věc co by se vám zde mohla hodit je, pokud chcete udělat z textu tlačítko (tím je myšleno nechcete pozadí tlačítka), můžete jen textu přidat component button a výsledek je stejný.
Pokud chcete testovat nesmíte zapomenout v build setting určit pořadí scén.
Když máme úvodní obrazovku, přejdeme na GameOver, bude velmi podobná, kdy jen vytvoříte tlačítko Play again a Menu s voláním správné funkce, o něco náročnější bude přejít na GameOver. Nechceme tam totiž skočit hned. Ideálně dát hráči chvíli na to, aby zjistil, že prohrál a po chvíli ho poslat na GameOver. Budeme upravovat Player.cs, kde jsme v minulé lekci přidávali zvuk zničení hráče. Pod ním můžeme přidat volání funkce LoadGameOver a v té přidáme čekání pár sekund než načte další scénu.
Přepneme se do Level.cs a přidáme si Coroutine, pomocí které budeme moci čekat x sekund a pak přepneme na scénu 2. LoadGameOver bude jen zapínat tuto rutinu.
Nyní by mělo přepínání scén fungovat a hráč by měl bez problémů se dostat přes start na hru a časem i na Game Over. Ještě ale uděláme jednu úpravu. Zatím můžeme létat skrz nepřátele a tak všem nepřátelům přidáme RigidBody2D, změníme Circle Collider 2D na Trigger (zaškrtneme “Is Trigger”) a přidáme DMG script. Můžete to udělat u všech nepřátel najednou. Když si je v Assets -> Prefab označíte ( Můžete kliknout na prvního, držet shift a kliknout na posledního nebo kliknout na prvního, držet CTRL a kliknout na všechny ostatní), můžete jim přidávat Componenty všem najednou. Také můžete všem najednou nastavit “Is Trigger”.
Nyní již nemůžete volně létat skrz nepřátele a to je zatím vše. Příště hudba na pozadí, později skóre a životy.