Programming/프로그래밍

[unity] 파일(또는 오브젝트) 선택시 커스텀 윈도우의 업데이트 방법 2가지

leeusin 2023. 7. 18. 18:13

커스텀 윈도우를 만들면 해당 커스텀 윈도우가 선택되어져 있는 상태에서만 업데이트가 된다.

OnGUI() 함수에 보통 버튼이나 라벨등의 UI 를 그려주는 코드를 짜게 되는데 하이어러키 창이나 프로젝트 창에서 아이템을 선택했을때 바로 커스텀 윈도우의 상황을 바꿔주고 싶을 경우가 있을것이다. 보통은 다른창에 선택이 되어있으면 커스텀 윈도우는 업데이트를 하지 않기 때문에...

 

첫번째 방법으로는 윈도우 시작시 업데이트 함수를 넣어주는게 있다.

public static void ShowWindow()
{
    var window = EditorWindow.GetWindow(typeof(ContinuousUpdateWindow));
    EditorApplication.update += window.UpdateWindow;
}
    
private void UpdateWindow()
{
    Repaint();
}

에디터 클래스에 윈도우 시작시 또는 Enable() 함수등에 업데이트 함수를 추가해주도록 한다.

위 방법은 매 업데이트마다 호출되므로 OnGUI가 자주 불리게 되므로 다른 창에서 무슨일을 하면 즉각 반응 하도록 되어있다.

단. 시작시 업데이트 함수를 추가해주었으므로 윈도우가 파괴될시  EditorApplication.update -= UpdateWindow; 를  추가해주어야한다.

 

두번째 방법으로는 함수추가만으로 끝내는 방법이 있다.

    private void OnSelectionChange()
    {
        Repaint();
    }

이건 보다시피 함수 하나만 추가하면 되는것으로 함수 추가및 삭제할 필요가 없다.

다만 다른창에서 뭔가가 선택될때만 들어오기때문에 그용도에만 맞다.

 

처음방법을 알아서 작업해두었다가 두번째 방법을 알아서 바꿔서 사용했는데 훨씬 편한것 같다.

반응형