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