EDITORWindow의 OngUI를 원하는 대로 호출

5545 단어 Unity
이렇게 말하지만 void Update() { OnGUI(); }처럼 직접 호출할 수는 없다.

Repaint 메서드 사용


가장 간단한 OngUI 호출 방법은 Editor Window입니다.나는 Repaint 방법을 호출하는 것이라고 생각한다.
#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;

public class FrameCountWindow : EditorWindow
{
    [MenuItem("Window/FrameCountWindow")]
    public static void OpenWindow()
    {
        GetWindow<FrameCountWindow>();
    }

    void OnGUI ()
    {
        EditorGUILayout.LabelField ("Frame: " + Time.frameCount);
    }

    // 毎フレーム更新
    void Update()
    {
        Repaint();
    }
}
#endif
메뉴 모음에서 FrameCountwindow를 엽니다.
Play의 경우 아래 그림의'Frame:x'가 강한 기세로 회전합니다.

다만, 리퍼런트의 순간에 다시 그리는 것은 아니겠죠.
OnGUI 호출 자체는 일반적인 절차로 진행되죠.반드시

발행 활동


Repaint 메서드를 사용하지 않는 방법으로는 Editor Window 릴리즈에 대해 직접 관계를 그리는 이벤트가 있습니다.
#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;

public class FrameCountWindow : EditorWindow
{
    [MenuItem("Window/FrameCountWindow")]
    public static void OpenWindow()
    {
        GetWindow<FrameCountWindow>();
    }

    void OnGUI ()
    {
        EditorGUILayout.LabelField ("Frame: " + Time.frameCount);
        Debug.Log(Event.current.commandName);
    }

    // 毎フレーム更新
    void Update()
    {
        var editorEvent = EditorGUIUtility.CommandEvent("Count" + Time.frameCount);
        editorEvent.type = EventType.Used;
        SendEvent(editorEvent);
    }
}
#endif
위의 예에서 Editor GUIUtility는Command Event 방법으로 이벤트를 만들고 그 이벤트를 Send Event 자신에게 던져 넣습니다.
EditorGUIUtility.CommandEvent 메서드의 매개변수 문자열에는 무엇이든 좋습니다.
이 문자열은 OnGUI 메서드Event.current.commandName에서 체크 아웃할 수 있습니다.editorEvent.type = EventType.Used;에서 설정한 EventType에 대해 OnGUI라고 부르지 않을 수도 있습니다.
그리고 이 방법도 이벤트를 발매했을 뿐, 세븐트가 순식간에 OngUI로 불린 것은 아니다.반드시

끝맺다


이번에는 Editor Window 안에서 자신을 다시 그리는 처리로 그다지 고맙지 않은 샘플이 됐다.
다만, Editor Window.Repaint 및 Editor Window센드이벤트는 모두 퍼블릭 방법이기 때문에 어디서든 호출할 수 있다.
편집기에서 Play에서 Editor Window를 실시간으로 업데이트하고 싶습니다!이 경우 사용할 수 있습니다.

좋은 웹페이지 즐겨찾기