ReSharper 2026.1 Help

代码检查:避免在继承自 'PropertyDrawer' 的类中使用 'base.OnGUI()'

在 Unity 中, PropertyDrawer 用于派生自定义属性绘制器。 重写 OnGUI 方法以实现自定义绘制逻辑时,调用 base.OnGUI() 通常是错误的。

Unity 源代码中 PropertyDrawer.OnGUI 的基础实现仅会绘制一个标签,显示 "No GUI implemented"。 这很少是开发者在实现自定义 GUI 时所期望的。 执行基方法可能会导致不必要的 UI 元素或意外的布局行为。

此检查会标记在继承自 UnityEditor.PropertyDrawer 的类中重写的 OnGUI 方法里调用 base.OnGUI() 的情况。

[CustomPropertyDrawer(typeof(MyData))] public class MyDrawer : PropertyDrawer { public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) { base.OnGUI(pos, prop, label); // Custom drawing logic } }
[CustomPropertyDrawer(typeof(MyData))] public class MyDrawer : PropertyDrawer { public override void OnGUI(Rect pos, SerializedProperty prop, GUIContent label) { // Custom drawing logic } }
2026年 5月 8日