代码检查:需要派生自“组件”或“MonoBehaviour”的类型。
Unity.ExpectedComponent 检查确保在使用基于字符串的 Unity API(如 GameObject.AddComponent(string) 和 GameObject.GetComponent(string) )时的类型安全性。 它会标记已指定类型存在但未从所需基类继承的情况(内置类型用 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年 5月 8日