Event

ㅋㅋ·2022년 9월 6일
0

OnGUI 함수는 사실 유니티 내부 event에서 불리는 함수임

EventType은 많은 것들이 있고 GUI는 Repaint 플래그일 때 그려진다.

마우스 이벤트로 인하여 OnGUI 이벤트가 호출 될 시에는 GUI가 다시 그려지지 않음

마우스가 에디터 툴 안에 들어 가거나 클릭하는 등 마우스로 에디터 창 내에서

무언가 행동을 하면 Layout 이벤트가 발생하며 OnGUI 함수가 호출 됨

해당 이벤트를 통해 정보를 수집 후 Repaint 이벤트를 발생시켜 UI를 다시 그리게 된다.

따라서 Layout 이벤트와 Repaint 이벤트 사이에 GUI에 관련된 값들이 변경될 시 에러 발생

{
    Rect area = EditorGUILayout.BeginVertical(GUILayout.Width(200));

    GUI.Box(area, GUIContent.none);

    EditorGUILayout.LabelField("test");

    EditorGUILayout.EndVertical();
}

위와 같이 area를 바로 box에 집어 넣을 수 있던 이유도

Layout 이벤트로 모든 값을 다 처리 후 GUI가 그려지기 때문임


if (Event.current.isMouse)
{
    Event.current.Use();
}

이벤트는 Use 함수를 통해 처리(clear) 할 수 있음

0개의 댓글