Страница 1 из 1

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

СообщениеДобавлено: 03 окт 2016, 15:58
mastersmit
Ребят, пишу расширение, для более удобной работы с диалогами (хочу именно свое, т.к. несколько специфично и в случае чего без проблем добавить новое)..
Так вот, объясните, как работает 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 нет..
Как ими правильно пользоваться?
Скрытый текст:
Изображение

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

СообщениеДобавлено: 03 окт 2016, 16:00
Tolking
GUI.Window рисует в окне то, что запрограммировано в WinFunc

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

СообщениеДобавлено: 03 окт 2016, 16:04
mastersmit
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));
    }
 

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

СообщениеДобавлено: 03 окт 2016, 16:13
mastersmit
GUILayout.Window тоже не кажет..
В WinFunc вставлял еще гуя - 0..

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

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

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

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