在unity中,继承UnityEngine.Object的类可以直接使用if(实例)来判断该实例是否为空,因为UnityEngine.Object实现了对bool的隐式转换,而其他继承c# System.Object的类的实例是不可以直接这么使用来判断的,必须使用if(实例 ==(或!=) null)来判断。
但是使用 UnityEngine 使用隐式转换的时候时常会提示Comparison to 'null' is expensive(表面上翻译是:与'null'比较是很昂贵的),就是说隐式直接转换时与null比较的开销是很大的。

这个问题出现在于它还检查底层引擎对象是否已被销毁,这意味着转换为本机代码。如果你确认这个Unity 实例并没有被销毁,可以使用:
errorTexture.png

if(!Object.ReferenceEquls(实例对象,null)){ ... }

来判断,可以减小一小部分开销,但是这个优化其实是非常细微的。大部分情况下都没有必要。
如果这么写了== null的话编辑器报错可以改成这种方式,或者如果不想改成这种方式写的话还有一种一劳永逸的方式:换个编辑器(嘿嘿!手动滑稽)

最后修改:2021 年 09 月 06 日 08 : 47 PM
如果觉得我的文章对你有用,请随意赞赏