代码检查:避免在继承自 '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日