Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

10. diel - Unity (C #) Android: GUI - menu 2

V minulej lekcii, Unity (C #) Android: Prestavba, bodáky , sme upravili pohyb hráčov a pozmenili aj spôsob, akým sa nám posúvajú prekážky.

V minulej lekcii, Unity (C #) Android: Prestavba, bodáky , sme sa zaoberali vytváraním GUI kódom. Dnešné tutoriál sa zaoberá opäť vytvorením menu, ale tentoraz by som chcel ukázať ďalšie 2 metódy, ako ide GUI urobiť. Tiež pribudne čiastočne funkcionalita.

Video

Skriptovanie menu

Dnes sa nám skripty patrične rozrástli, takže sa ich pokúsim aj trochu okomentovať

Vzhľad a interface menu - pomocou 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, už čiastočne sprevádzkovaný

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();
    }

}

Ďalší typ menu, tentoraz cez 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);
            }
        }
    }
}

Ako hra vyzerá teraz?

Tvorba 2D arkády pre Android v Unity

Problémy?

Ak máte nejaké otázky ohľadom nastavovania, neváhajte sa opýtať v komentároch, alebo mi napísať do správ.

V budúcej lekcii, Unity (C #) Android: MenuPart, Eraser, pozadia , sa budeme venovať optimalizáciu a opakovanie pozadia.


 

Predchádzajúci článok
Unity (C #) Android: Prestavba, bodáky
Všetky články v sekcii
Tvorba 2D arkády pre Android v Unity
Preskočiť článok
(neodporúčame)
Unity (C #) Android: MenuPart, Eraser, pozadia
Článok pre vás napísal vratislavino
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
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