我一直在做一个统一的项目,我正试图调用一个函数invoke (string, float);虽然我得到一个错误说检查我的gameobject
是否为空,所以我试着做
debug.log(gameObject == null);
返回一个错误。我试着
debug.log(this == null);
结果真的吗?
有人知道如何解决这个问题吗?
if(confetti != null)
{
confetti.Play();
}
if (this != null)
{
StartCoroutine("restart");
}
else
SceneManager.LoadScene("SampleScene");
关于Unity的一个不幸的事情是,当你在Unity对象上执行== null
时,你实际上并不只是检查空引用。对于Unity Objects,如果引用为null或对象在场景中被破坏,== null
将返回true。
这是一个重要的区别,因为Unity对象实际上大多存在于c++中,而你在c#中得到的对象大多只是包装。
在这里查看被接受的答案
如果你只想检查null引用,而不是Unity Object是否已被销毁,请执行以下操作之一:
-
使用
is null
/is not null
语法 -
在执行
== null
检查之前将Unity对象强制转换为System.Object
-
使用
object.ReferenceEquals(something, null)
-
使用空合并操作符