Создание Простого Меню В Unity3D

Урок По заявкам!

Задача: нужно сделать простое меню для игры. Естественно, действия отключения звука, старта игры и т.д. вам нужно самим дописать, я лишь привел шаблон.

Смотрим…



А код как всегда под катом:)

код скрипта Menu.cs

using UnityEngine;
using System.Collections;

public class Menu : MonoBehaviour {
    
    bool b_IsShowMenu,b_IsShowGamePlay,b_IsShowOptions;
    bool b_IsMusicOn;
    // Use this for initialization
    void Start () {
        b_IsShowMenu = true;
        b_IsShowOptions = b_IsShowGamePlay = false;
        b_IsMusicOn = true;
    }
    
    // Update is called once per frame
    void Update () {
    
    }
    
    void OnGUI()
    {
        if(b_IsShowMenu)
        {
            GUILayout.BeginArea(new Rect(Screen.width/2-50,Screen.height/2-50,100,100));
            GUILayout.BeginVertical();
            if(GUILayout.Button("Начать игру"))
            {
                b_IsShowMenu = false;
                b_IsShowGamePlay = true;
            }
            GUILayout.FlexibleSpace();
            if(GUILayout.Button("Опции"))
            {
                b_IsShowMenu = false;
                b_IsShowOptions = true;
            }
            GUILayout.FlexibleSpace();
            if(GUILayout.Button("Выход"))
            {
                Application.Quit();
            }
            GUILayout.EndVertical();
            GUILayout.EndArea();
        }
        else if(b_IsShowGamePlay)
        {
            GUILayout.BeginArea(new Rect(10,10,Screen.width-20,Screen.height-20));
            GUILayout.BeginVertical();
            GUILayout.FlexibleSpace();
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if(GUILayout.Button("Начать"))
            {
                //play game
                //в этом блоке пишите логику для старта игры. Либо это подгрузка
                //уровня, либо какое-то окно открывается...
            }
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
            GUILayout.FlexibleSpace();
            if(GUILayout.Button("Назад",GUILayout.Width(100)))
            {
                b_IsShowGamePlay = false;
                b_IsShowMenu = true;
            }
            GUILayout.EndVertical();
            GUILayout.EndArea();
        }
        else if(b_IsShowOptions)
        {
            GUILayout.BeginArea(new Rect(10,10,Screen.width-20,Screen.height-20));
            GUILayout.BeginVertical();
            GUILayout.FlexibleSpace();
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            b_IsMusicOn = GUILayout.Toggle(b_IsMusicOn,"Вкл. музыку?");
            if(b_IsMusicOn)
            {
                //play music
            }
            else
            {
                //stop music
            }
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
            GUILayout.FlexibleSpace();
            if(GUILayout.Button("Назад",GUILayout.Width(100)))
            {
                b_IsShowOptions = false;
                b_IsShowMenu = true;
            }
            GUILayout.EndVertical();
            GUILayout.EndArea();
        }
    }
}

3 комментария

avatar
Сного я, о что вписывать в скрипт что бы при нажатии старт пререходило к игре?? Помогите плиз
avatar
Смотря как она у тебя запускается… Если в отдельно сцене, то переходи на нее с помощью Application.LoadLevel();
avatar
очень плохо слышно комментарии в видео! Приходится вслушиваться… на будущее можно там подшаманить с настройками микрофона!?:))
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.