代码检查:方法签名不正确
此检查确保 Unity 事件函数(如 Start、 Update 等)以及带有特定 Unity 属性的方法(例如 [InitializeOnLoadMethod] 或 [RuntimeInitializeOnLoadMethod] )严格符合 Unity API 要求的签名。
运作方式
Unity 依赖于特定的方法签名(修饰符、返回类型和参数)来正确调用事件函数和回调方法。 如果方法签名与 Unity 的预期不符,可能不会被调用,或者会导致运行时错误。
分析器会检查方法声明是否符合预期签名。 会根据不匹配情况标记如下问题:
无效的
static修饰符。返回类型不正确(例如,方法应返回
void)。参数数量或类型不匹配。
无效的类型参数。
对于带注解的方法,签名会从 Unity 的 RequiredSignature 元数据或已知属性的内置列表中获取。
示例
在此示例中, Start 方法被错误地声明为 static ,并且带有额外参数的 int 作为返回值。 快速修复会自动调整签名以符合 Unity 的要求。
public class MyScript : MonoBehaviour
{
// Reported: Start should be non-static void with no parameters
public static int Start(int value)
{
return 42;
}
}
public class MyScript : MonoBehaviour
{
// After fix: Signature corrected to match Unity's expectation
public void Start()
{
return 42;
}
}
多个有效签名
在某些情况下,Unity 允许同一事件函数有几种不同的有效签名(例如, OnCollisionStay 可带有或不带 Collision 参数)。 如果当前签名不符合任何有效选项,检查器会提示选择其中一个可用的正确签名。
2026年 5月 8日