JetBrains Rider 2026.1 Help

代码检查:冗余的特性用法(冗余的 'SerializeField' 特性)

此检查将在以下条件下高亮显示 [SerializeField] 特性为冗余:

  • 如果字段同时有 [SerializeField][NonSerialized] 特性, [NonSeralized] 特性优先生效,Unity 将忽略 [SerializeField] 特性。 如果字段同时应用了这两个特性, [SerializeField] 特性将被标记为冗余。

  • 如果 [SerializeField] 特性应用于无法序列化的字段,例如该字段为 staticreadonly ,或该字段所属的类不可序列化(要么未从 Unity 基类如 MonoBehaviour 派生,要么是未添加 [System.Serializable] 特性的一般 .NET 类),此检查会将其标记为冗余。

此检查还提供快速修复以移除冗余特性。 对于普通 .NET 类,还提供快速修复,可为类添加 [System.Serializable] 特性。

备注

请注意,在使用显式序列化 API(如 JsonUtility.ToJson )时,Unity 会序列化标记有 [SerializeField] 且所在类没有 [System.Serializable] 的字段。 但如果该类在 Unity 派生类中作为隐式序列化时使用,比如在 MonoBehaviour 基类的字段,则不会对该字段序列化。 这意味着当类仅用于显式序列化时,可能会出现错误的冗余特性警告。

这被认为是边界情况——无法判断类仅被用于显式序列化时,更重要的是在隐式序列化可能失败时进行警告。 边界情况的解决方法是使用快速修复功能为类添加 [System.Serializable] 特性。

另请参阅 Unity 关于 SerializeField 的文档。

2026年 5月 8日