代码检查:预期类型应派生自 '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日