我有一个可序列化的类对象
[Serializable]
public class ScheduledRoutine
{
public int uid { get; private set; }
public string TaskName = "";
}
我的函数想要检查 ScheduledRoutine 对象是否为空,我尝试使用以下代码,但它不起作用。
void Somefunction()
{
ScheduledRoutine myroutine;
if (myroutine != null)
{
// Do something when it is not null.
}
else
{
// Do something when it is null.
}
}
这个函数总是会进入非空逻辑。但是如果我尝试获取 myroutine.uid 并且出现空引用错误......
当 ScheduledRoutine 不是可序列化对象时,此函数将起作用...但是,由于我的需要,我需要使其工作... 有什么解决办法吗?
您的值将自动创建,因为它是序列化对象。解决您的情况的最简单方法是 ScheduledRoutine 从 ScriptableObject 派生,或者您可以只向检查器添加 bool 而不是检查 null,其他方法可能涉及使用 [SerializeReference],但您可能需要自定义检查器,有时这很棘手.