ReSharper 2026.1 Help

代码检查:方法签名不正确

此检查确保 Unity 事件函数(如 StartUpdate 等)以及带有特定 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日