Пятница, 22 Ноября 2024, 00:31

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проблема в реализации меню
Georgiy0912Дата: Понедельник, 09 Сентября 2013, 15:41 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Привет всем. Мой вопрос прост: Как сделать плавный переход между разделами в главном меню? Хочется, что бы менюшки не просто пропадали и появлялись, а как нибудь "уезжали" в сторону при переходе... Структура кода у меня такая:
Код

public string currentMenu = Main;

void OnGUI()
{
       if(currentMenu = "Main")
            MainMenu();
       if(currentMenu = "Settings")
            SettingsMenu();
}

//Функция меняющая разделы
void ChangeMenu(string nextMenu)
{
      currentMenu = nextMenu;
}

//Главный раздел главного меню
void MainMenu()
{
       //Переход в раздел настроек
       if(GUI.Button(new Rect(10,10,100,30), "Настройки"))
            ChangeMenu("Settings");
}

//Раздел настроек главного меню
void SettingsMenu()
{
       //Назад в главный раздел
       if(GUI.Button(new Rect(10,10,100,30), "Назад"))
            ChangeMenu("Main");
}



Подумывал сделать все в 3д пространстве, но потом вспомнил, что в оригинале есть текстовые поля, так, что сделать это в 3д будет весьма проблематично. Настоящий код у меня конечно гораздо сложнее, но суть та же. Жду ответов.


Сообщение отредактировал Georgiy0912 - Понедельник, 09 Сентября 2013, 16:02
robertonoДата: Понедельник, 09 Сентября 2013, 17:01 | Сообщение # 2
Чокнутый Кот
Сейчас нет на сайте
Georgiy0912, я бы подождал новый Unity и uGUI. Там это будет в два клика)
А насчет вашей проблемы : можно например с помощью Time.deltaTime через цикл for сдвигать каждую секунду на сколько то.
Georgiy0912Дата: Понедельник, 09 Сентября 2013, 17:21 | Сообщение # 3
почетный гость
Сейчас нет на сайте
robertono, про uGUI первый раз слышу) Если я правильно понял, надо создать переменную, равную 0, и суммировать её с X кардинатами всех GUI элементов, а во время перехода увеличивать это переменную Mathf.SmoothDamp'ом. Попробую. Посмотрим какие дальше будут ответы. Спасибо.
JHawkДата: Понедельник, 09 Сентября 2013, 18:17 | Сообщение # 4
めゃくちゃちゃ
Сейчас нет на сайте
Georgiy0912, я бы порекомендовал тебе сделать "Матеръяльное" меню. Вот пример
Сам с помощью него столько всего понаделал..... Аж вспоминать страшно)

Добавлено (09.09.2013, 18:17)
---------------------------------------------
А если хочеться сделать именно через GUI, то бери способ описанный robertono.

Georgiy0912Дата: Понедельник, 09 Сентября 2013, 18:57 | Сообщение # 5
почетный гость
Сейчас нет на сайте
JHawk, а как в материальном меню сделать текстовые поля? Буду, как сказал robertono
robertonoДата: Понедельник, 09 Сентября 2013, 20:48 | Сообщение # 6
Чокнутый Кот
Сейчас нет на сайте
Georgiy0912, поставил бы мне + лучше cry cry cry
Georgiy0912Дата: Понедельник, 09 Сентября 2013, 21:26 | Сообщение # 7
почетный гость
Сейчас нет на сайте
robertono, забыл, ок smile
robertonoДата: Понедельник, 09 Сентября 2013, 22:19 | Сообщение # 8
Чокнутый Кот
Сейчас нет на сайте
Georgiy0912, удачи в разработке smile
lentinantДата: Понедельник, 09 Сентября 2013, 22:23 | Сообщение # 9
ленивый программист
Сейчас нет на сайте
Можно написать собственный шейдер, которые будет выводить поверх текстуры указанный текст.

А вообще, разве у Unity не было поддержки ScaleForm?


Когда-то тут будут ссылки на крутые проекты. Или нет.
robertonoДата: Понедельник, 09 Сентября 2013, 23:03 | Сообщение # 10
Чокнутый Кот
Сейчас нет на сайте
Цитата (lentinant)
Можно написать собственный шейдер, которые будет выводить поверх текстуры указанный текст.

это точно не по уровню ТС smile
SkmaestroДата: Понедельник, 09 Сентября 2013, 23:51 | Сообщение # 11
участник
Сейчас нет на сайте
хэх, оч. легко, какие шейдеры о чем вы ребят тут работы на 0.1-0.2 м
Код

var s : Vector2;
    if(GUI.Button(new Rect(10,10,s.x,s.y), "Настройки"))  {CLICKED();}

function CLICKED() {
var speed: int;
var double_speed : int;
var count : int;
var count2 : int = 100;
for(var i=0;i<=speed;i++)
{
count+=1;
if(count<=count2)
{
count=0;
s.x-=double_speed;
}}}

Если хочешь можешь вместо этого всего
Код
for(var i=0;i<=60;i++)
{
yield WaitForSeconds(1.0);
s.x-=(Screen.width/60)+Button_Size
}

Я писал не в редакторе, так что строго не судить-)
помог плюсани пож репа нада)


Помог поставь +
Проект DeadWorldZ пока заморожен иными словами разрабатывается скрытно
Skype: Skmaestro867


Сообщение отредактировал Skmaestro - Понедельник, 09 Сентября 2013, 23:53
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг