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를 실시간으로 업데이트하고 싶습니다!이 경우 사용할 수 있습니다.
Reference
이 문제에 관하여(EDITORWindow의 OngUI를 원하는 대로 호출), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/satanabe1@github/items/451e92082b7657d3ef5b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)