代码检查:预期使用派生自“ScriptableObject”的类型
此检查确保 Unity 基于字符串的 ScriptableObject 创建 API 的类型安全,专门针对 ScriptableObject.CreateInstance(string) 方法。
运作方式
该检查使用 Unity 特有的引用提供程序,将字符串文字解析为项目或库中的类型声明。 类型解析后,分析器会检查其继承层次结构。
验证规则:解析出的类型必须从 UnityEngine.ScriptableObject 派生。
如果解析出的类型存在但没有从 ScriptableObject 继承,检查会产生警告。 这样可以防止在运行时出现错误,因为 Unity 无法实例化对象,原因是指定的类型不是有效的 ScriptableObject。
示例
在此示例中, MyPlainClass 没有从 ScriptableObject 继承,因此无法通过 CreateInstance 实例化。
public class MyPlainClass { }
public class MyScript : MonoBehaviour
{
void Start()
{
// Reported: MyPlainClass is not a ScriptableObject
ScriptableObject.CreateInstance("MyPlainClass");
}
}
public class MyData : ScriptableObject { }
public class MyScript : MonoBehaviour
{
void Start()
{
// After fix: MyData is a ScriptableObject
ScriptableObject.CreateInstance("MyData");
}
}
2026年 5月 8日