Lekce 5 - Unity (C#) Android: GUI - menu 1
V minulé lekci, Unity (C#) Android: Generování stalagů 2, jsme se zabývali opravováním generování mapy. Dnešní tutoriál se zabývá vytvořením menu. Je to pouze první část. Druhou se pokusím udělat co nejdříve, protože tam budou klíčové informace k zprovoznění tohoto prvního způsobu tvoření menu.
Video
Skriptování menu
Dnes se nám skripty patřičně rozrostly, takže se je pokusím i trochu okomentovat
Vzhled a interface menu
using UnityEngine; using System.Collections; [ExecuteInEditMode] //tento řádek nám umožní vidět změny v GUI, aniž bychom museli hru spouštět public class OnGUIScriptMenu : MonoBehaviour { public bool useLayout; public GUISkin menuSkin; public GameObject reaction; // funkce sloužící k vykreslování GUI (neboli HUD), pozor na to, jak se metoda píše // a myslete na to, že se volá asi 7x častěji než Update, takže tady // nejsou nejvýhodnější složité opakované propočty void OnGUI() { GUI.skin = menuSkin; // přiřazení skinu, tímto // řádkem nastavujeme předem definovaný vzhled if (useLayout) GUIUseLayout(); else GUIDontUseLayout(); } // funkce použitá pro vkládání prvků do layoutu void GUIUseLayout() { // počáteční area, obaluje celý screen, umožňuje nám pozicovat // pomocí GUILayout pozicovacích příkazů GUILayout.BeginArea(new Rect(0,0,Screen.width, Screen.height)); // vyplní místo maximální možnou mezerou GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.BeginVertical(); // funkce GUILayout.Button() vrací bool, což znamená, že ho můžeme dát // rovnou do podmínky if(GUILayout.Button("Survival", GUILayout.Width(300), GUILayout.Height(100))) { // SendMessage na daném objektu zavolá ve všech skriptech metodu // ClickedSurvival(), pokud ji mají reaction.SendMessage("ClickedSurvival"); } if(GUILayout.Button("Arcade", GUILayout.Width(300), GUILayout.Height(100))) { reaction.SendMessage("ClickedArcade"); } if(GUILayout.Button("Exit", GUILayout.Width(300), GUILayout.Height(100))) { reaction.SendMessage("ClickedExit"); } GUILayout.EndVertical(); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); GUILayout.EndArea(); } void GUIDontUseLayout() { // funkce pro vytvoření okna s callback funkcí WindowFunc GUI.Window(0, CenterRect(320, 350), WindowFunc, ""); } // metoda, která nám vrátí vycentrovaný Rect o správné velikosti Rect CenterRect(int width, int height) { Rect r = new Rect(); r.width = width; r.height = height; r.x = Screen.width / 2 - width / 2; r.y = Screen.height / 2 - height / 2; return r; } // Callback funkce, která slouží k vykreslení obsahu uvnitř okna void WindowFunc(int id) { if (GUILayout.Button("Survival", GUILayout.Width(300), GUILayout.Height(100))) { reaction.SendMessage("ClickedSurvival"); } if (GUILayout.Button("Arcade", GUILayout.Width(300), GUILayout.Height(100))) { reaction.SendMessage("ClickedArcade"); } if (GUILayout.Button("Exit", GUILayout.Width(300), GUILayout.Height(100))) { reaction.SendMessage("ClickedExit"); } } }
Jednoduchý reakční skript, který budeme upravovat v příštím díle zprovozňovat
using UnityEngine; using System.Collections; public class ReactionScript : MonoBehaviour { // metody mohou být private, protože je voláme metodou SendMessage("názevmetody"), // která se volá ve skriptech lokálně private void ClickedArcade() { print("clicked Arcade"); } private void ClickedSurvival() { print("clicked Survival"); } private void ClickedExit() { print("clicked Exit"); } }
Jednoduchá utilitka, která nám vrátí, jestli je zařízení, na kterém spouštíme hru, mobil
using UnityEngine; using System.Collections; public class Utils : MonoBehaviour { public static bool IsMobile() { if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.WP8Player || Application.platform == RuntimePlatform.IPhonePlayer) return true; else return false; } }
Jak hra vypadá teď?

Problémy?
Pokud máte nějaké otázky ohledně nastavování, neváhejte se zeptat v komentářích, nebo mi napsat do zpráv.
V příští lekci, Unity (C#) Android: GUI - menu 2, se budeme nadále věnovat vytváření menu.
V příští lekci, Unity (C#) Android: GUI - menu 2, se podíváme na ještě pohodlnější způsob,
jak tvořit naše GUI .
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 86x (1.74 kB)
Aplikace je včetně zdrojových kódů v jazyce C#