Editor窗口刷新常用代码

发布时间 2023-10-09 23:02:16作者: yanghui01

 

EditorApplication.RepaintAnimationWindow(); //刷新Animation窗口
EditorApplication.RepaintProjectWindow(); //刷新Project窗口
EditorApplication.RepaintHierarchyWindow(); //刷新hierarchy窗口 

InternalEditorUtility.RepaintAllViews(); //刷新所有窗口

SceneView.RepaintAll(); //刷新场景窗口

typeof(Editor).Assembly.GetType("UnityEditor.GameView").GetMethod("RepaintAll").Invoke(null, null); //刷新Game窗口
typeof(Tools).GetMethod("RepaintAllToolViews", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static).Invoke(null,null); //刷新工具栏

 

通用的方式

public static void RepaintInspector()
{
    var windows = UnityEngine.Resources.FindObjectsOfTypeAll<UnityEditor.EditorWindow>();
    foreach (var win in windows)
        if (win.titleContent.text == "Inspector") //Inspector窗口
            win.Repaint();
}

其他的一些窗口的titleContent字符串: Scene, Hierarchy, Navigation, Project, Game, Console, Animation, Animator, Sprite Packer, Sprite Editor, Frame Debug, Profiler, Timeline