Полностью настраиваемое меню

Части и запчасти к проектам, дополнительное программное обеспечение.

Полностью настраиваемое меню

Сообщение HostGameStodios 15 июл 2014, 11:15

Вот решил набраться опыта по скриптингу,и написать ассет для unity3d под названием "Horror Kit".Ассет для создания хоррора со всеми нуждами: ИИ,скриммеры,модели,скрипты. И написав 3 вида скриммеров,я решил взяться за меню для ДЕМО и для игрока в целом. И вспомнив что это ассет подумал что оно должно настраиваться не из скрипта,а из инспектора. Получилось так:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Menu : MonoBehaviour {

        /******************* GLOBAL PARAMETERS ***********************/
        public GUISkin YourGuiSkin;
        public bool PlayerMenu_yes_no = false;
        /*****************Button Names******************/
        public string PlayButton = "Play";
        public string AboutButton = "About";
        public string OptionsButton = "Options";
        public string VideoSetButton = "Video";
        public string ExitButton = "Exit";
        /******************Info (about) **********/
        public string InfoText = "Horror Enige";
        /************* VIDEO SETINGS ************/
        public string VideoSet = "Video";
        public string QuatlyText = "Change Quatly";
        public string LowGarfiksQuatlyLVLName = "Low";
        public int LowGarfiksQuatlyLVLumber = 0;
        public string MediumGarfiksQuatlyLVLName = "medium";
        public int MediumGarfiksQuatlyLVLumber = 2;
        public string HightGarfiksQuatlyLVLName = "Hight";
        public int HightGarfiksQuatlyLVLumber = 3;
        public string UltraGarfiksQuatlyLVLName = "Ultra";
        public int UltraGarfiksQuatlyLVLumber = 4;
        /************ AUDIO SETINGS ************/
        public string AudioSet = "Audio";
        private float VolumeN;
        /**********GAMEPLAY SETINGS*********/
        public bool GamePlaySettings = true;
        public string GamePlaySet = "GamePlay";
        public bool Modes = true;
        public int Mode = 2;
        public string LowModeT = "LowMode";
        public string MediumModeT = "MediumMode";
        public string HardModeT = "HardMode";
        public string ChangeLevelText = "ChangeLevel";
        public string Level1 = "SlenderDemo";
        public string Level2 = "DefaultDemo";
        public string Level3 = "MainDemo";
        public string Level1Name = "SlenderDemo";
        public string Level2Name = "DefaultDemo";
        public string Level3Name = "MainDemo";
        public bool GUIScrimmer = true;
        /***************** Exit Options ******************/
        public string SureExit = "Are you sure?";
        public string Yes = "Yes";
        public string NO = "No";
        /*OTHER*/
        private int window;
        public string OptionsName = "GameOptions";
        public string BackText = "Back";

        void Start () {
                window = 1;
        }
       
        void OnGUI () {
                GUI.skin = YourGuiSkin;
                GUI.BeginGroup (new Rect (Screen.width / 2 - 100, Screen.height / 2 - 100, 300, 400));
                if(window == 1)
                {
                        if(GUI.Button (new Rect (10,30,180,30), PlayButton))
                        {
                                window = 2;  
                        }
                        if(GUI.Button (new Rect (10,70,180,30), OptionsButton))
                        {
                                window = 3;
                        }
                        if(GUI.Button (new Rect (10,110,180,30), AboutButton))
                        {
                                window = 4;
                        }
                        if(GUI.Button (new Rect (10,150,180,30), ExitButton))
                        {
                                window = 5;
                        }
                }
               
                if(window == 2)
                {
                        GUI.Label(new Rect(50, 10, 180, 30), ChangeLevelText);  
                        if(GUI.Button (new Rect (10,40,180,30), Level1))
                        {  
                                Application.LoadLevel(Level1Name);
                        }
                        if(GUI.Button (new Rect (10,80,180,30), Level2))
                        {
                                Application.LoadLevel(Level2Name);
                        }
                        if(GUI.Button (new Rect (10,120,180,30), Level3))
                        {
                                Application.LoadLevel(Level3Name);
                        }
                        if(GUI.Button (new Rect (10,160,180,30), BackText))
                        {
                                window = 1;
                        }
                }
               
                if(window == 3)
                {
                        GUI.Label(new Rect(50, 10, 180, 30), OptionsName);  
                        if(GamePlaySettings == true){
                        if(GUI.Button (new Rect (10,40,180,30), GamePlaySet))
                        {
                                window = 6;
                        }
                        }
                        if(GUI.Button (new Rect (10,80,180,30), AudioSet))
                        {
                                window = 7;
                        }
                        if(GUI.Button (new Rect (10,120,180,30), VideoSet))
                        {
                                window = 8;
                        }
                        if(GUI.Button (new Rect (10,160,180,30), BackText))
                        {
                                window = 1;
                        }  
                }
               
                if(window == 4)
                {
                        GUI.Label(new Rect(50, 10, 180, 30), AboutButton);  
                        GUI.Label(new Rect( 10, 40, 180, 40), InfoText);
                        if(GUI.Button (new Rect (10,170,180,30), BackText))
                        {
                                window = 1;
                        }  
                }
               
                if(window == 5)
                {
                        GUI.Label(new Rect(50, 10, 180, 30), SureExit);  
                        if(GUI.Button (new Rect (10,40,180,30), Yes))
                        {
                                Application.Quit();
                        }
                        if(GUI.Button (new Rect (10,80,180,30), NO))
                        {
                                window = 1;
                        }
                }
                if(window == 8)
                {
                        if(GUI.Button(new Rect (10,80,180,30), LowGarfiksQuatlyLVLName))
                        {
                                QualitySettings.SetQualityLevel (LowGarfiksQuatlyLVLumber);
                        }
                        if(GUI.Button(new Rect (10,110,180,30), MediumGarfiksQuatlyLVLName))
                        {
                                QualitySettings.SetQualityLevel (MediumGarfiksQuatlyLVLumber);
                        }
                        if(GUI.Button(new Rect (10,140,180,30), HightGarfiksQuatlyLVLName))
                        {
                                QualitySettings.SetQualityLevel (HightGarfiksQuatlyLVLumber);
                        }
                        if(GUI.Button(new Rect (10,170,180,30), UltraGarfiksQuatlyLVLName))
                        {
                                QualitySettings.SetQualityLevel (UltraGarfiksQuatlyLVLumber);
                        }
                        GUI.Label (new Rect (10,50,180,30), QuatlyText);
                        if(GUI.Button(new Rect (10,210,180,30), BackText))
                        {
                                window = 1;
                        }
                }
                        if(window == 6){
                        if(PlayerMenu_yes_no == false){
                                GUIScrimmer = GUI.Toggle (new Rect (10,80,180,30), GUIScrimmer, "GUIScrimmer");
                        }
                        if(GUI.Button(new Rect (10,230,180,30), BackText))
                        {
                                window = 1;
                        }
                        if(Modes == true){
                        if(GUI.Button(new Rect (10,140,180,30), LowModeT))
                        {
                                Mode = 1;
                        }
                        if(GUI.Button(new Rect (10,170,180,30), MediumModeT))
                        {
                                Mode = 2;
                        }
                        if(GUI.Button(new Rect (10,200,180,30), HardModeT))
                        {
                                Mode = 3;
                        }
                        }
                }
                                if(window == 7){
                        VolumeN = GUI.HorizontalSlider(new Rect (10,80,180,30), VolumeN, 5, 10);
if(GUI.Button(new Rect (10,210,180,30), BackText))
                        {
                                window = 1;
                        }
                }

                GUI.EndGroup ();
        }
}

 

ВНИМАНИЕ!
Меню еще не готово!Не сделал вкладки-аудио, ну и настраиваться не полностью...Ну как вам?Надеюсь понравиться :ymhug: . Если хотите могу урок по скриммерам выложить (popcorn1).
Что нового?:
*Упорядочил переменные
*Добавил поддержку GUI Scin
Что в следующих версиях скрипта?:
*Настройки аудио
*Обсалютная настройки из инспектора
*Сохранение сложности

Скриншоты:
Изображение
Изображение
Изображение
Последний раз редактировалось HostGameStodios 18 июл 2014, 19:05, всего редактировалось 3 раз(а).
Моё умение-неправильно задавать вопросы.Так что если вы чего то не поняли вполне можете меня назвать дебилом,а потом попросить "перезадать" вопрос
Аватара пользователя
HostGameStodios
UNIт
 
Сообщения: 51
Зарегистрирован: 20 май 2014, 19:53

Re: Полностью настраиваемое меню

Сообщение ikhtd 15 июл 2014, 11:25

Если бы прикрепить веб демо - было бы очень хорошо.
Скрытый текст:
Объективная реальность это - что в жизни не может быть более одного пути, который в свою очередь обусловлен максимальным существующим давлением. (второй _ttp://habrahabr.ru/post/202654/)
ikhtd
Адепт
 
Сообщения: 1124
Зарегистрирован: 24 мар 2014, 12:20

Re: Полностью настраиваемое меню

Сообщение cibersant 15 июл 2014, 12:46

Такое наверно у каждого.Я думал у тебя там можно в режиме редактирования меню править.
_https://vk.com/app4031890 - 3d боец
cibersant
Старожил
 
Сообщения: 938
Зарегистрирован: 14 дек 2011, 01:27

Re: Полностью настраиваемое меню

Сообщение HostGameStodios 15 июл 2014, 14:06

ikhtd писал(а):Если бы прикрепить веб демо - было бы очень хорошо.

Знаю,но инет оч медленный так что врядле :-? .Я попробую
Моё умение-неправильно задавать вопросы.Так что если вы чего то не поняли вполне можете меня назвать дебилом,а потом попросить "перезадать" вопрос
Аватара пользователя
HostGameStodios
UNIт
 
Сообщения: 51
Зарегистрирован: 20 май 2014, 19:53

Re: Полностью настраиваемое меню

Сообщение HostGameStodios 15 июл 2014, 14:08

cibersant писал(а):Такое наверно у каждого.Я думал у тебя там можно в режиме редактирования меню править.

Ну не скажы...По форумам лазил везде такое что только из скрипта настраивать :) .А с графическим редактированием я не знаком,все время NGUI использовал
Моё умение-неправильно задавать вопросы.Так что если вы чего то не поняли вполне можете меня назвать дебилом,а потом попросить "перезадать" вопрос
Аватара пользователя
HostGameStodios
UNIт
 
Сообщения: 51
Зарегистрирован: 20 май 2014, 19:53

Re: Полностью настраиваемое меню

Сообщение HostGameStodios 15 июл 2014, 14:42

Добавил скрины,смотрите в начале ;)
Моё умение-неправильно задавать вопросы.Так что если вы чего то не поняли вполне можете меня назвать дебилом,а потом попросить "перезадать" вопрос
Аватара пользователя
HostGameStodios
UNIт
 
Сообщения: 51
Зарегистрирован: 20 май 2014, 19:53

Re: Полностью настраиваемое меню

Сообщение Good1101 15 июл 2014, 14:57

да вы просто маг и волшебник.
Как тут стрелять?
Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ

Re: Полностью настраиваемое меню

Сообщение HostGameStodios 15 июл 2014, 15:59

Good1101 писал(а):да вы просто маг и волшебник.

Чего?Сарказм чтоль? 8()
Моё умение-неправильно задавать вопросы.Так что если вы чего то не поняли вполне можете меня назвать дебилом,а потом попросить "перезадать" вопрос
Аватара пользователя
HostGameStodios
UNIт
 
Сообщения: 51
Зарегистрирован: 20 май 2014, 19:53

Re: Полностью настраиваемое меню

Сообщение ikhtd 15 июл 2014, 17:42

да вы просто маг и волшебник.

ну что вы - он человек новенький и не знает что мы тут пашем как негры - а получаем то что получаем всю жизнь. А он еще только ключи подает.
Скрытый текст:
Объективная реальность это - что в жизни не может быть более одного пути, который в свою очередь обусловлен максимальным существующим давлением. (второй _ttp://habrahabr.ru/post/202654/)
ikhtd
Адепт
 
Сообщения: 1124
Зарегистрирован: 24 мар 2014, 12:20

Re: Полностью настраиваемое меню

Сообщение cibersant 15 июл 2014, 18:12

Я так реально и делаю,написал меню,запустил в режим game,в инспекторе настроил меню,записал на листик или скриншот,вышел в режим редактирования,в инспекторе ввёл данные.Всё.
_https://vk.com/app4031890 - 3d боец
cibersant
Старожил
 
Сообщения: 938
Зарегистрирован: 14 дек 2011, 01:27

Re: Полностью настраиваемое меню

Сообщение HostGameStodios 15 июл 2014, 18:20

cibersant писал(а):Я так реально и делаю,написал меню,запустил в режим game,в инспекторе настроил меню,записал на листик или скриншот,вышел в режим редактирования,в инспекторе ввёл данные.Всё.

а я нет,точнее не делал :)
ikhtd писал(а):
да вы просто маг и волшебник.

ну что вы - он человек новенький и не знает что мы тут пашем как негры - а получаем то что получаем всю жизнь. А он еще только ключи подает.

Че?
Моё умение-неправильно задавать вопросы.Так что если вы чего то не поняли вполне можете меня назвать дебилом,а потом попросить "перезадать" вопрос
Аватара пользователя
HostGameStodios
UNIт
 
Сообщения: 51
Зарегистрирован: 20 май 2014, 19:53

Re: Полностью настраиваемое меню

Сообщение HostGameStodios 16 июл 2014, 11:10

Обновил скрипт,добавил настройки сложности.Измеряются в int а не bool,что бы сохранять в Player Prefs легче было (popcorn)
Моё умение-неправильно задавать вопросы.Так что если вы чего то не поняли вполне можете меня назвать дебилом,а потом попросить "перезадать" вопрос
Аватара пользователя
HostGameStodios
UNIт
 
Сообщения: 51
Зарегистрирован: 20 май 2014, 19:53


Вернуться в Компоненты (Копилка)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1