Этот занимательный GUI [РЕШЕНО]

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

Этот занимательный GUI [РЕШЕНО]

Сообщение mastersmit 03 окт 2016, 15:58

Ребят, пишу расширение, для более удобной работы с диалогами (хочу именно свое, т.к. несколько специфично и в случае чего без проблем добавить новое)..
Так вот, объясните, как работает GUI.Window?
Предполагалось сделать вот так:
Синтаксис:
Используется csharp
using (var scrollScope = new GUI.ScrollViewScope(rc, scrollPosition2, new Rect(0, 0, 2000, 2000)))
                {
                    scrollPosition2 = scrollScope.scrollPosition;
                    if (new Rect(0, 0, rc.width, rc.height).Contains(Event.current.mousePosition) && Event.current.isMouse && Event.current.button == 2)
                    {
                        scrollPosition2 -= Event.current.delta;
                    }
                   
                    if (questionBlocks.Count > 0)
                    {
                        for (int i = 0; i < questionBlocks.Count; i++)
                        {
                            Debug.Log("Блок " + i);
                            questionBlocks[i].rect = GUI.Window(i, questionBlocks[i].rect, WinFunc, "Блок " + i);
                        }
                       
                    }
                   
                }
 

Дебаг проходит, но ничего не выводится. То есть, при нажатии на кнопку в другом месте гуя - заполняется questionsBlocks необходимыми данными (там только Рект и Ид). Дебажил все и вся.. questionBlocks нигде не обнуляется.. Но этих Window нет..
Как ими правильно пользоваться?
Скрытый текст:
Изображение
Последний раз редактировалось mastersmit 03 окт 2016, 16:43, всего редактировалось 2 раз(а).
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край

Re: Этот занимательный GUI

Сообщение Tolking 03 окт 2016, 16:00

GUI.Window рисует в окне то, что запрограммировано в WinFunc
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2715
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Этот занимательный GUI

Сообщение mastersmit 03 окт 2016, 16:04

Tolking писал(а):GUI.Window рисует в окне то, что запрограммировано в WinFunc

Ок
Синтаксис:
Используется csharp
void WinFunc(int windowId)
    {
        GUI.Button(new Rect(0, 0, 20, 20), "+");
        GUI.DragWindow(new Rect(0, 0, 1000, 1000));
    }
 
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край

Re: Этот занимательный GUI

Сообщение mastersmit 03 окт 2016, 16:13

GUILayout.Window тоже не кажет..
В WinFunc вставлял еще гуя - 0..
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край

Re: Этот занимательный GUI [РЕШЕНО]

Сообщение seaman 04 окт 2016, 12:55

1. Вызывать GUI.Window внутри if нужно осторожно, т.к. для постоянного отображения окна нужно чтобы GUI.Window вызывалось постоянно внутри OnGUI.
2. Если используете GUI.Window, нужно MonoBehaviour.useGUILayout ставить в true.
Ну и еще - если это расширение для редактора, почему не EditorWindow или его наследник PopupWindow?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Этот занимательный GUI [РЕШЕНО]

Сообщение mastersmit 05 окт 2016, 14:20

Ну вообще editorwindow использую..
А не отображались GUI.window, потому что прозевал BeginWindows() и соответственно EndWindows(), хотя в справке по GUI.window про них не слова. Случайно наткнулся на методы, когда начал писать begin.. И Guilayout.window, ибо больше понравилось настраивать через begin и end..
И уже ноды сделал с необходимыми привязками к GUI.window.. Правда пока косячно малех и решил уже их полностью переделать.. Но то, что уже работает и корректно (почти) все что надо заполняет - это радует :)
Если честно, то думал все сложнее будет.. Но чутка логики, мсдн и юнитидокс творят чудеса :)
Может потом когда доделаю, то покажу на видео что получилось, но в юнитистор вряд ли буду выкладывать, ибо повторюсь - делаю для себя, чтобы более удобно заполнять сложные ветки для диалогов..
Аватара пользователя
mastersmit
Старожил
 
Сообщения: 558
Зарегистрирован: 12 май 2014, 14:05
Откуда: Приморский край


Вернуться в Editor

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

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