스프라이트 애니메이션을 개발하며

유니티 애니메이션 클립 미리보기같은 느낌으로
에디터에서 애니메이션을 미리보는 기능을 만들었다

 

개발하다보니 문제가 생겼는데

에디터의 OnInspectorGUI나 OnPreviewGUI 같은 함수는
"마우스가 인스펙터 위로 지나갈 때"만 다시 그려진다는 것

https://docs.unity3d.com/ScriptReference/Editor.RequiresConstantRepaint.html

요 함수를 오버라이드해 주기적으로 Repaint를 요청할 수 있다

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using UnityEngine;
using UnityEditor;
 
[CustomEditor(typeof(AnimationData), true)]
public class AnimationDataEditor : Editor
{
    private double lastTime;
 
 
    public override bool RequiresConstantRepaint() => true;
 
    public override void OnInspectorGUI()
    {
        // EditorApplication.timeSinceStartup 을 사용해 에디터에서 시간 측정을 할 수 있다
        var currentTime = (float) (EditorApplication.timeSinceStartup - lastTime); 
 
        ...
    }
}
cs

 

블로그 이미지

stuban

ㅇ.ㅇ

,