コードインスペクション:メソッドシグネチャーが正しくありません
このインスペクションは、Unity イベント関数 (Start、 Update など) および特定の Unity 属性 ([InitializeOnLoadMethod] や [RuntimeInitializeOnLoadMethod] など) でマークされたメソッドが、Unity API で想定される必須のシグネチャーと完全に一致することを保証します。
仕組み
Unity は、イベント関数とコールバックメソッドを正しく呼び出すために、特定のメソッドシグネチャー(修飾子、戻り値の型、パラメーター)に依存しています。 メソッドのシグネチャーが Unity の想定と一致しない場合、メソッドが呼び出されないか、実行時エラーが発生する可能性があります。
アナライザーは、メソッド宣言を期待されるシグネチャーと照合します。 不一致に応じて、次のような問題点を指摘します。
無効な
static修飾子です。戻り値の型が正しくありません(例: メソッドは
voidを返す必要があります)。パラメーターが一致していません(カウントまたは型)。
無効な型パラメーターです。
属性付きメソッドの場合、シグネチャーは Unity の RequiredSignature メタデータ、または既知の属性の組み込みリストから収集されます。
サンプル
この例では、 Start メソッドが誤って static として宣言されており、余分なパラメーターを持つ int を返します。 クイックフィックスは、Unity の要件に合うようにシグネチャーを自動的に調整します。
複数の有効な署名
場合によっては、Unity は同じイベント機能に対して複数の有効な署名を許可します (たとえば、 OnCollisionStay は Collision パラメーターの有無にかかわらず使用できます)。 現在の署名が有効なオプションのいずれにも一致しない場合、インスペクションは使用可能な正しい署名のいずれかを選択するように促します。