代码检查:空值比较开销较大
派生自 Unity.Object 的类会继承相等运算符,这会改变 == 和 != 运算符的行为。 虽然这些运算符将执行标准的 .NET 引用相等性判断,但如果将一方与 null 进行比较,这些运算符会调用原生代码来检查底层原生引擎对象是否仍然存活。 有关此背景的更多详细信息,请参阅 底层 Unity 引擎对象生命周期检查可能被意外绕过检查的解释。
这种到原生代码的转换可能开销较大,因为 Unity 会执行查找和验证,以便将脚本引用转换为原生引用。 虽然开销较小,但将 Unity 对象与 null 进行比较的代价远高于与普通 C# 类的比较,并应避免在 性能关键上下文和循环中出现。
该检查会对在性能关键上下文中对 null 与 UnityEngine.Object 子类的比较添加性能指示高亮显示。 还将提供以下 Alt+Enter 上下文操作:
移至循环外部. 这将引入一个变量来保存结果,并将比较转移到循环作用域之外。
移至 Start 或 Awake. 这将引入一个字段来保存结果,并将比较转移到
启动或Awake。
2026年 5月 8日