Unity C#中如何检查[Serialized]类对象是否为空?

问题描述 投票:0回答:1

我有一个可序列化的类对象

[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 不是可序列化对象时,此函数将起作用...但是,由于我的需要,我需要使其工作... 有什么解决办法吗?

c# unity-game-engine serializable
1个回答
0
投票

您的值将自动创建,因为它是序列化对象。解决您的情况的最简单方法是 ScheduledRoutine 从 ScriptableObject 派生,或者您可以只向检查器添加 bool 而不是检查 null,其他方法可能涉及使用 [SerializeReference],但您可能需要自定义检查器,有时这很棘手.

© www.soinside.com 2019 - 2024. All rights reserved.