Как запустить метод после вызова метода OnGUI() в EditorWindow?

Тут нашёл порядок выполнения функций событий. Но так и не понял как запустить метод, после события отрисовки GUI (void OnGUI (){}).

#if UNITY_EDITOR
public class Main : EditorWindow {
    [MenuItem ("Window/Panorama Terrain Tools")]
    public static void ShowWindow () {
        m_WindowMain = (Main) GetCustomWindow (true);
        // if(Main.m_WindowMain == null) { Main.m_WindowMain = (Main) Main.GetCustomWindow (true); }
        m_WindowMain.Show ();
    }

    public static Main GetCustomWindow (bool focus) {
        return GetWindow<Main> ("Работа с объектами и terrain", focus);
    }


    void OnEnable () {

    }
    void OnGUI () {
     ...
    }

    void SomeMethod(){
     Debug.Log("метод который надо вызывать после метода void OnGUI () {}");
    }
}
#endif

Ответы (1 шт):

Автор решения: RiotBr3aker

Можно сделать через события и отписку после первого срабатывания:

public abstract class ExtendedEditorWindow : EditorWindow {
    public event Action OnAfterDrawingGUI;

    private void OnGUI () {
        DrawContents();
        OnAfterDrawingGUI?.Invoke();
    }

    protected abstract void DrawContents();
}

public class MyWindow : ExtendedEditorWindow {
    private void OnEnable() {
        OnAfterDrawingGUI += SomeMethod;
    }

    protected override void DrawContents() {
        // Drawing contents
    }

    private void SomeMethod() {
        // отписываемся после первого срабатывания
        OnAfterDrawingGUI -= SomeMethod;

        Debug.Log("SomeMethod()");
    }
}
→ Ссылка