Unity: this == null返回true.这是怎么发生的?



我一直在做一个统一的项目,我正试图调用一个函数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)

  • 使用空合并操作符

相关内容

  • 没有找到相关文章