В документации сказано, что метод EditorWindow.Show
открывает окно EditorWindow. Замечательно. Создаю я два класса:
первый
public class WindowOne : EditorWindow {
public static WindowOne windowOneInstance;
[MenuItem("Window/Open Window One")]
public static void Init() {
windowOneInstance = GetWindow<WindowOne>(false, "Window One", true);
}
}
второй
public class WindowTwo : EditorWindow {
public static WindowTwo windowTwoInstance;
public static WindowOne windowOneInstance;
[MenuItem("Window/Open Window Two")]
public static void Init() {
windowTwoInstance = GetWindow<WindowTwo>(false, "Window Two", true);
windowOneInstance = WindowOne.windowOneInstance;
}
public void OnGUI() {
if (GUI.Button(new Rect(0, 0, 200, 50), new GUIContent("show window one"))) {
windowOneInstance.Show();
}
}
}
Всё очень просто: в меню я кликаю по Open Window One
, затем по Open Window Two
, чтобы открыть два окна и затем одно из них (Window One) я закрываю:
Теперь, если во втором окне я кликаю кнопку "show window one", то первое окно не появляется. Точнее появляется какая-то однопкисельная точка, которую нельзя ни увеличить в размерах, ни сдвинуть с места, ни что-то еще
Если я пишу GetWindow(typeof (WindowOne));
вместо .Show()
- то окно показывается, но я не уверен, что это то же самое окно, что было в начале, потому что instanceID
этого окна будет отличаться от того, что было изначально.
Собственно, почему метод Show
работает так странно? Что я делаю не так? И что мне нужно сделать, чтобы показать тот же самый экземпляр окна, который был закрыт (временно скрыт) ранее?
Версия Unity - 5.6.0p4
Если закрыл окно, то показать потом его снова уже нельзя, ссылка становится null. А пиксель который показывает, это болванка создается, и растянуть ее можно, если потянуть в верхний левый угол(на маке не уверен), там окно будет с пометкой "Failed to load". В том числе EditorWindow это ScriptableObject. И вот что делает функция Show:
public void Show()
{
this.Show(false);
}
public void Show(bool immediateDisplay)
{
if (this.m_Parent == null)
{
EditorWindow.CreateNewWindowForEditorWindow(this, true, immediateDisplay);
}
}
Ну и видимо при закрытии он ставит размер окна EditorWindow минимальными. И при повторном открытии получаешь пустое окно с минимальными размерами(насколько позволяет ОС).
Выход: EditorWindow использовать как болванку для отображения, а данные и действия брать из своих статических скриптов.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Я пишу программу, способную решать уравнения / системы с помощью этой библиотеки
Есть несколько моделей и для них BusinessContext в котором описаны CRUD операцииПо сути они одни, только меняются таблицы
Надо предоставить игроку возможность создавать игровое поле посредством рисования(пример)Ввод осуществляется исходя из координат курсора(в...