コードインスペクション: 「Component」または「MonoBehaviour」から派生した型が必要です
Unity.ExpectedComponent インスペクションは、 GameObject.AddComponent(string) や GameObject.GetComponent(string) などの文字列ベースの Unity API を使用する際の型安全性を保証します。 指定された型が存在するものの、必要な基底クラス (組み込み型の場合は UnityEngine.Component 、ユーザー定義型の場合は UnityEngine.MonoBehaviour) を継承していない場合にフラグを立てます。
仕組み
インスペクションは、Unity 固有の参照プロバイダを使用して、文字列リテラルをプロジェクトまたはライブラリ内の型に解決します。 型が解決されると、アナライザーは、それが呼び出されるメソッドの継承要件を満たしているかどうかを確認します。
検証ルール:
ビルトインタイプの場合 (Unity アセンブリから): この型は
UnityEngine.Componentから派生する必要があります。ユーザー定義型の場合 (現在のプロジェクト内): 型は
UnityEngine.MonoBehaviourから派生する必要があります。
これにより、Unity が指定されたコンポーネントを追加または検出できない場合(想定されるシグネチャーと一致しないため)に発生する実行時エラーやサイレントエラーを防ぐことができます。
サンプル
この例では、 MyPlainClass は MonoBehaviour を継承していないため、 GameObject のコンポーネントとして追加することはできません。
public class MyPlainClass { }
public class MyScript : MonoBehaviour
{
void Start()
{
// Reported: MyPlainClass is not a MonoBehaviour
gameObject.AddComponent("MyPlainClass");
}
}
public class MyComponent : MonoBehaviour { }
public class MyScript : MonoBehaviour
{
void Start()
{
// After fix: MyComponent is a MonoBehaviour
gameObject.AddComponent("MyComponent");
}
}
2026 年 6 月 12 日