Unity C#中!= null检查和null安全运算符之间有什么区别?

问题描述

我试图通过使用公共变量有条件地在Unity中显示GameObject。如果在组件窗口中设置了变量,那么我应该隐藏gameObject以便将来激活它。如果没有设置,那么我什么都不要做。我有这个,但是给了我NullReferenceException: Object reference not set to an instance of an object

public GameObject optionalGO; //May be set from GUI

void Start(){
    optionalGO?.SetActive(false); //Gives error
}

然后我更改了行,对此给出了错误,并且工作正常:

if(optionalGO!= null) optionalGO.SetActive(false);

我不了解它们之间的区别,关于脚本的其余部分或上下文没有别的说法。为什么这些行不相等?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)