原文(我查到这个解决的):Unity - Editor OnInspectorGUI 绘制数据显示更新不及时问题_unity oninspectorgui-CSDN博客
先放解决方案:
直接在OnInspectorGUI尾加上如下代码
public override void OnInspectorGUI()
{
//---其他GUI代码---
//Object target 标记为“脏”的对象。
EditorUtility.SetDirty(target);//增加脏标记
}
项目场景:
例如:在代码中使用了OnDrawGizmos()画了辅助线后,在Unity Editor OnInspectorGUI中重写了OnDrawGizmos中使用的参数,就会出现更新不及时的问题
![如图所示 输入数据后必须按回车Gizmos才会改变](https://img-blog.csdnimg.cn/direct/a08f8bbd278940dd91540a523f1ecdf7.gif)
原因:
脏标记(Dirty Flag):当你通过 OnInspectorGUI
修改了某个值,Unity不会自动立即重新调用OnDrawGizmos
。相反,它依赖于Unity的脏标记系统来决定何时重新渲染场景视图。如果你修改了属性但没有触发脏标记,场景视图可能不会立即更新。
所以解决方法就是在 OnInspectorGUI
中修改属性后,尝试调用 :
EditorUtility.SetDirty(target)
来标记目标对象为“脏”,这可能会触发Unity重新渲染场景视图。
调用后:
在OnInspectorGUI后调用
Gizmos的更新就丝滑了许多:
![增加脏标记后解决了问题](https://img-blog.csdnimg.cn/direct/d7b95bfd22bb4e25a9c1f596e0e68e49.gif)