为ScriptableObject添加空CustomEditor导致Inspector异常显示问题
问题原因与解决办法
核心问题
你在自定义编辑器中用async void修饰了OnInspectorGUI方法,这完全违背了Unity Editor GUI的同步绘制机制。Unity的Inspector绘制是每帧同步执行的,异步方法会让base.OnInspectorGUI()的执行脱离正常GUI绘制周期,导致内置的列表滚动容器无法正确生成,所有200个列表项被一次性渲染,进而引发卡顿。
修复方案
直接移除async修饰符,将方法改回同步执行即可:
public override void OnInspectorGUI() { base.OnInspectorGUI(); }
额外说明
如果业务逻辑确实需要异步操作,绝对不能直接放在OnInspectorGUI内。可以把异步逻辑抽离到单独方法中,通过EditorApplication.update或者Task.Run配合EditorUtility.DisplayProgressBar来处理,既不阻塞GUI线程,也能保证Inspector正常绘制。
内容的提问来源于stack exchange,提问作者Nick Hudson
相关产品推荐
相关产品推荐

