Синтаксис:
Используется csharp
class MyEditor : EditorWindow
{
pritvate bool _init;
[MenuItem("WOT/MyEditor")]
public static MyEditor Start()
{
MyEditor w = GetWindow<MyEditor>(false, "My Editor");
Debug.Log("ONE!!! X= " + w.position.x + " Y= " + w.position.y + " W= " + w.position.width + " H= " + w.position.height);
return w;
}
public void OnEnable()
{
name = "My Editor";
wantsMouseMove = true;
autoRepaintOnSceneChange = false;
Debug.Log("ZERO!!! X= " + position.x + " Y= " + position.y + " W= " + position.width + " H= " + position.height);
_InitStyle();
}
public void OnGUI()
{
if (EditorApplication.isCompiling) return;
if (!_init)
{
Debug.Log("Two!!! X= " + position.x + " Y= " + position.y + " W= " + position.width + " H= " + position.height);
_Init();
}
{
pritvate bool _init;
[MenuItem("WOT/MyEditor")]
public static MyEditor Start()
{
MyEditor w = GetWindow<MyEditor>(false, "My Editor");
Debug.Log("ONE!!! X= " + w.position.x + " Y= " + w.position.y + " W= " + w.position.width + " H= " + w.position.height);
return w;
}
public void OnEnable()
{
name = "My Editor";
wantsMouseMove = true;
autoRepaintOnSceneChange = false;
Debug.Log("ZERO!!! X= " + position.x + " Y= " + position.y + " W= " + position.width + " H= " + position.height);
_InitStyle();
}
public void OnGUI()
{
if (EditorApplication.isCompiling) return;
if (!_init)
{
Debug.Log("Two!!! X= " + position.x + " Y= " + position.y + " W= " + position.width + " H= " + position.height);
_Init();
}
Вопросы на засыпку. В каком порядке будут вызваны методы? Совпадут ли выведенные в консоль значения? И если не совпадут где будут выведены правильные размеры окна?
Мне почему то казалось, что сначала должен вызываться метод, который определяет меню, затем OnEnable, а затем OnGUI. И размеры окна должны быть верными сразу после его создания, т.е. после вызова метода GetWindow. Оказывается нет:
Первым вызывается OnEnable, затем метод меню, затем, естественно OnGUI (в следующем кадре, как я понимаю). А верные размеры окна выдает только в OnGUI.
Вопрос - так и должно быть, или я что-то не так делаю? Вопрос - это где-то в мануале есть, или нет?
Почему вопросы, раз я вроде бы уже все сделал? Потому что было бы гораздо удобнее получить размеры окна (начальные, я понимаю, что они могут измениться) в OnEnable. Настроить все под них. А в OnGUI только следить за их изменением.