NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

Lekce 6 - Unity (C#) Android: GUI - menu 2

Dnešní tutoriál se zabývá opět vytvořením menu, ale tentokrát bych chtěl ukázat další 2 metody, jak jde GUI udělat. Také přibude částečně funkcionalita.

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 - pomocí GUITexture

using UnityEngine;
using System.Collections;

public class GUITextureMenu : MonoBehaviour {

    public GUITexture[] buttons; // pole uchovávající všechny buttony, na které se dá kliknout
    public Texture2D button_up;
    public Texture2D button_down;

    bool mobile;
    bool down;

    // Use this for initialization
    void Start () {
        mobile = Utils.IsMobile();
    }

    // Update is called once per frame
    void Update () {

        Vector3 pos = Vector3.zero;
        if(mobile)
        {
            if(Input.touches.Length > 0) //"pokud je zaznamenán dotyk"
            {
                Touch t = Input.GetTouch(0);
                pos = t.position;

                if (t.phase == TouchPhase.Ended) // pokud se jedná o fázi dotyku, kdy jsme prst odendali
                    down = true;
                else
                    down = false;
            }
        }
        else
        {
            pos = Input.mousePosition;

            if (Input.GetMouseButtonUp(0))
                down = true;
            else
                down = false;
        }

        foreach(GUITexture gt in buttons)
        {
            if (gt.GetScreenRect().Contains(pos))
            {
                gt.texture = button_down;
                if(down)
                {
                    React(gt.name); // reakce na jednotlivá tlačítka
                }
            }
            else { gt.texture = button_up; }
        }

    }

    void React(string nam)
    {
        switch(nam)
        {
            case "Survival": { GameObject.Find("Reaction").SendMessage("ClickedSurvival"); break; }
            case "Arcade": { GameObject.Find("Reaction").SendMessage("ClickedArcade"); break; }
            case "Exit": { GameObject.Find("Reaction").SendMessage("ClickedExit"); break; }
        }
        //GameObject.Find("Reaction").SendMessage();
    }
}

Jednoduchý reakční skript, již částečně zprovozněný

using UnityEngine;
using System.Collections;

public class ReactionScript : MonoBehaviour {

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

    private void ClickedSurvival()
    {
        Application.LoadLevel("default_Scene");
    }

    private void ClickedExit()
    {
        Application.Quit();
    }

}

Další typ menu, tentokrát přes Raycast Sprite

using UnityEngine;
using System.Collections;

public class RaycastMenu : MonoBehaviour {

    Camera c;
    public LayerMask lm;

    // Use this for initialization
    void Start () {
        c = GetComponent<Camera>();
    }

    // Update is called once per frame
    void Update () {
        if(Input.GetMouseButtonDown(0))
        {
            Vector2 pos = Input.mousePosition;

            Ray r = c.ScreenPointToRay(pos);
            RaycastHit2D hit = Physics2D.Raycast(r.origin, r.direction, Mathf.Infinity, lm);
            if(hit == null && hit.collider == null)
            { }
            else
            {
                print(hit.collider.name);
            }
        }
    }
}

Jak hra vypadá teď?

Zdrojákoviště Unity - 2D hry

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: MenuPart, Eraser, pozadí, se budeme věnovat optimalizaci a opakování pozadí.


 

Předchozí článek
Unity (C#) Android: GUI - menu 1
Všechny články v sekci
Zdrojákoviště Unity - 2D hry
Přeskočit článek
(nedoporučujeme)
Unity (C#) Android: MenuPart, Eraser, pozadí
Článek pro vás napsal vratislavino
Avatar
Uživatelské hodnocení:
Ještě nikdo nehodnotil, buď první!
Autor se věnuje programování v C#, především pak ve vývojovém prostředí Unity3D. Má asi pětileté zkušenosti s programováním a momentálně pracuje na připravované hře Azulgar: Beyond The Frontiers.
Aktivity