コードインスペクション:「PropertyDrawer」から派生したクラスでは「base.OnGUI()」を避ける
Unity では、 PropertyDrawer(英語) を使用してカスタムプロパティドロワーを生成しています。 OnGUI(英語) メソッドをオーバーライドしてカスタム描画ロジックを提供する場合、 base.OnGUI() を呼び出すのは通常誤りです。
Unity のソースコードに含まれる PropertyDrawer.OnGUI の基本実装では、「GUI は実装されていません」というラベルが表示されるだけです。 これは、開発者が独自のカスタム 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 年 6 月 12 日