Понедельник, 19 Апреля 2021, 11:38

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Шаблон окна (читаем)
Шаблон окна
Jlovenpk1Дата: Понедельник, 30 Декабря 2013, 00:16 | Сообщение # 1
участник
Сейчас нет на сайте
Хочу создать шаблон диалогового окна, для квестов и просто информации.
В WoW это все связанно напрямую с базой данных(когда разрабатывал квесты под сервера). Текст, условия задания, условия выполения, условия награды - Все было в базе.
Шаблон в WoW везде одинаков, меняются только текст и иконки.



В Lineage 2 это всё напрямую зависит от xml файла, как сам шаблон, так и весь текст, условия задания и т.д
Опять же, даже в xml файле указываются ДМГ предмета и т.д(не суть, но все же).

Шаблон в Lineage 2:



Плюсы таких шаблонов - Это быстрое создание и редактирование нужных предметов, квестов и т.д И не надо выпускать по +100500 обновлений на игру, просто все берется от сервера и идет к клиенту.

Вопрос, как реализовать такой шаблон в Unity 3D?)


DjanStudio
PocifikДата: Понедельник, 30 Декабря 2013, 02:14 | Сообщение # 2
участник
Сейчас нет на сайте
Не совсем понятно. Ты вроде написал как это сделано. Конкретнее напиши что не получается сделать именно в юнити.
Jlovenpk1Дата: Понедельник, 30 Декабря 2013, 08:32 | Сообщение # 3
участник
Сейчас нет на сайте
Я знаю, как это реализовано в л2 и WoW.

Пытался сделать через GUI - Сделал шаблон:
Кнопка - закрывающая диалог.
Лабел - где появляется весь текст, который я вписываю вручную (как сделать чтение с xml или с базы, даже не представляю, т.к unity только изучаю)

Не понимаю, как через GUI по нажатие на Button удалялось все, скрывать - Нет смысла, диалог должен уничтожатся на камере игрока.

Как у меня это было реализовано:

Скрипт лежит в папке - NPC.
При OnMouseDown на NPC, появляется весь шаблон, вызов .cs скрипта, знаю как сделать, но как сделать весь шаблон не представляю.

Добавлено (30.12.2013, 08:32)
---------------------------------------------
Шаблон не корректно работает, нужно создать Окно с своим дизайном и текстом, который он берет с базы или xml.
Думал сделать в Visual Studio окно, дизайн(получается отдельный exe), но как его впилить в саму игру, это же Бред:D


DjanStudio
nwsxДата: Понедельник, 30 Декабря 2013, 08:50 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
разбирайся сам, пока не появятся более конкретные вопросы

Westboro
Dungeon Journey на Google Play
Jlovenpk1Дата: Понедельник, 30 Декабря 2013, 09:19 | Сообщение # 5
участник
Сейчас нет на сайте
Нашел интересный способ, GUI.Window.

Можно ли реализовать на нем достойный шаблон?)


DjanStudio
EchoITДата: Понедельник, 30 Декабря 2013, 09:40 | Сообщение # 6
старожил
Сейчас нет на сайте
Цитата
разбирайся сам, пока не появятся более конкретные вопросы

Ты бесполезный.

Цитата
Нашел интересный способ, GUI.Window.

Можно ли реализовать на нем достойный шаблон?)

Господи, да чего ты паришься? Просто нарисуй шаблон окна как в WoW, или как тебе хочется, повесь его на GUITexture, а для каждой строки создавай GUIText, при нажатии на который будет какое-то действие, так же делаешь ещё одну GUITexture с изображением кнопки, координату Z этой GUITexture ставь на 1 больше, чем у самого окна (у GUIText, кстати, сделай то же самое), и скриптом закрытия окна. Это самое примитивное, что я могу предложить.


Долгожданный анонсик: State of War
Jlovenpk1Дата: Понедельник, 30 Декабря 2013, 09:46 | Сообщение # 7
участник
Сейчас нет на сайте
nwsx, Ставить " - " в репу, за правду в глаза, ну ты жалкое существо.

EchoIT, Спасибо, попробую сегодня создать.

Добавлено (30.12.2013, 09:46)
---------------------------------------------
EchoIT, Так там еще используется скроллинг, в GUITexture это реализуемо?


DjanStudio
KamiRoninДата: Понедельник, 30 Декабря 2013, 10:27 | Сообщение # 8
почти ветеран
Сейчас нет на сайте
Цитата Jlovenpk1 ()
Так там еще используется скроллинг, в GUITexture это реализуемо?

нет, нужно делать ручками.

если есть возможность - возьми NGUI. разберешься с ним будет весь нужный тебе функционал, там и прокрутка есть. только загрузки из xml нету.

если нет возможности с NGUI то тут будет необходимо воспроизвести большой кусок функционала GDI Windows - самому писать обработчики событий окна - нажатие кнопок, таскание, прокрутку. Их просто придется писать в коде.
Цитата Jlovenpk1 ()
Нашел интересный способ, GUI.Window.

да. эт оно.. но не все что требуется.
В нативном GUI есть еще стили. например
Через них можно сделать любой вид окна и с прокруткой.
Останется только вопрос формирования содержимого. А это - чтение xml, возможно инвентарь, два, три для каких нибудь специальных операций по игре.

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

и конечно есть уже куча написанных например или вот


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.


Сообщение отредактировал KamiRonin - Понедельник, 30 Декабря 2013, 10:56
nwsxДата: Понедельник, 30 Декабря 2013, 10:59 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Цитата Jlovenpk1 ()
nwsx, Ставить " - " в репу, за правду в глаза, ну ты жалкое существо.

ты ребёнок и бездарь wink


Westboro
Dungeon Journey на Google Play
romgermanДата: Понедельник, 30 Декабря 2013, 12:12 | Сообщение # 10
старожил
Сейчас нет на сайте
Цитата Jlovenpk1 ()
Так там еще используется скроллинг, в GUITexture это реализуемо?

Делаешь полную текстуру окна с местом для текста, иконки и блаблабла, но без скроллера (без самой полосы). Потом создаёшь в этом гуи.виндов ещё одно окно другого размера и "ставишь галочку", чтобы включить скроллбар.
KamiRoninДата: Понедельник, 30 Декабря 2013, 13:57 | Сообщение # 11
почти ветеран
Сейчас нет на сайте
Цитата romgerman ()
Делаешь полную текстуру окна с местом для текста, иконки и блаблабла, но без скроллера (без самой полосы). Потом создаёшь в этом гуи.виндов ещё одно окно другого размера и "ставишь галочку", чтобы включить скроллбар.

думал GUI.BeginScrollView и Box предложишь.
хотя почему и нет?! smile
молоток. лови +!
(видать я просто не очень к этой скриптописанной гуи.. "вложенное во вложенное с галочкой" smile )


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
PocifikДата: Понедельник, 30 Декабря 2013, 15:16 | Сообщение # 12
участник
Сейчас нет на сайте
Вот про чтение из xml http://unity3d.ru/distribution/viewtopic.php?f=11&t=9253
Jlovenpk1Дата: Понедельник, 30 Декабря 2013, 20:14 | Сообщение # 13
участник
Сейчас нет на сайте
cry GUITexture - вроде как становится GO.

Как его удалить?
Пробовал не рендрить его, через enabled выключить. Не получается.


DjanStudio

Сообщение отредактировал Jlovenpk1 - Понедельник, 30 Декабря 2013, 23:36
lakorisДата: Понедельник, 30 Декабря 2013, 23:31 | Сообщение # 14
постоянный участник
Сейчас нет на сайте
Jlovenpk1, создаешь булевую переменную. Если она равна тру - рисуем GUITexture. Если нет - само должно пропадать.
Jlovenpk1Дата: Вторник, 31 Декабря 2013, 00:12 | Сообщение # 15
участник
Сейчас нет на сайте
lakoris, Я уже все перекопал.
GUITexture становится, как GO, через Destroy я его удаляю со сцены, но скрыть его не могу ни как, что насчет рисовать вообще не знаю.
Так, на нем еще будет текст, Gui.Windows и кнопка закрытия, все это надо будет, как я понял через GetComponent скрывать.
Вот чем и каким инструментом, я не знаю) Подскажите


DjanStudio
romgermanДата: Вторник, 31 Декабря 2013, 00:32 | Сообщение # 16
старожил
Сейчас нет на сайте
Jlovenpk1, текстуру лучше через код добавляй, если уж ты хочешь нормальное функциональное окно (GUI.DrawTexture).

Добавлено (31.12.2013, 00:32)
---------------------------------------------

Цитата Jlovenpk1 ()
через GetComponent скрывать.

Зачем??
Код

bool quest = false/true;

if(quest)
{
     GUI.Window();
}

Проблемс?
Jlovenpk1Дата: Среда, 01 Января 2014, 23:45 | Сообщение # 17
участник
Сейчас нет на сайте
Всем спасибо, начинает получатся, долго (тут была ненармотивная лексика) с Наследование классов и методов, но решил остановится на условиях и логике.
(программировал на Delphi раньше, C# только осваиваю)
romgerman, Тебе отдельное спасибо за пинки под зад)
Код
class quest : MonoBehaviour {
     
     
   public Texture aTexture; // Текстура
   public GameObject Npc; // Поиск НПС
   public bool questsb = false; // Логика работа шаблона
   void SearchNpc() // Метод поиска нпс
   {
      
    Npc = GameObject.Find("dikar"); // нашли НПС
      
   }
   public void OnMouseDown() // по нажатию на клавишу мышки
   {
    questsb = true; // Логика истина
   }
     
   public void OnGUI() // метод OnGUI
   {
    if (questsb == true) // если логика истина
    {
    GUI.DrawTexture(new Rect(10,10,350,150), aTexture); // рисуем шаблон
    }
    if (questsb == true) // если логика истина   
    {
     if (GUI.Button(new Rect(25,10,50,50),"Close")) // Рисуем кнопка
     {
      questsb == false; // Если нажата кнопка, то логика ложь и мы вырубаем все
     }
    }
       
   }
}


2.1.1 Употреблять нецензурные выражения (мат). В том числе и с использованием подстановочных знаков. Цитата с матом также является нарушением.
Так как первое предупреждение, то обойдёмся без наказания. В будующем будьте осторожнее! (Akyltist)


DjanStudio
romgermanДата: Четверг, 02 Января 2014, 02:20 | Сообщение # 18
старожил
Сейчас нет на сайте
Цитата Jlovenpk1 ()
if (questsb == true) // если логика истина
    {
    GUI.DrawTexture(new Rect(10,10,350,150), aTexture); // рисуем шаблон
    }
    if (questsb == true) // если логика истина   
    {
     if (GUI.Button(new Rect(25,10,50,50),"Close")) // Рисуем кнопка
     {
      questsb == false; // Если нажата кнопка, то логика ложь и мы вырубаем все
     }
    }

Код

if(questsb) // если логика истина  
{  
     GUI.DrawTexture(new Rect(10,10,350,150), aTexture); // рисуем шаблон  

     if (GUI.Button(new Rect(25,10,50,50),"Close")) // Рисуем кнопка  
     {
         questsb == false; // Если нажата кнопка, то логика ложь и мы вырубаем все  
     }  
}
Jlovenpk1Дата: Четверг, 02 Января 2014, 13:56 | Сообщение # 19
участник
Сейчас нет на сайте
romgerman, Я уже так оптимизировал)))
Но все равно спасибо))

Скоро доделаю все до человеческого вида и скину готовое.


DjanStudio
nwsxДата: Пятница, 03 Января 2014, 01:01 | Сообщение # 20
постоянный участник
Сейчас нет на сайте


Westboro
Dungeon Journey на Google Play
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Шаблон окна (читаем)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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