代码检查:'Camera.main' 计算开销较大。
Camera.main 属性返回第一个被 "MainCamera" 标签标记的相机。 对于早于 2019.4.9 的 Unity 版本,这是通过调用 FindGameObjectsWithTag 实现的。 结果不会被缓存,因此频繁访问此属性会影响性能。 可以考虑将相机缓存到一个字段中,并在 Start 或 Awake 中设置该值。
自 Unity 2019.4.9 起, Camera.main 现在快多了。 在内部,Unity 会缓存拥有 "MainCamera" 标签的 GameObject 实例,并且 Camera.main 会返回此缓存中第一个启用的对象。 虽然现在快多了,但现在类似于调用 GetComponent (包括到本地代码的转换),仍建议将该值缓存。
当在性能关键环境下访问 Camera.main 属性时,此检查会给其添加性能指示高亮。 ReSharper 还提供通过 Alt+Enter 在 Awake 或 Start 方法中缓存结果的上下文操作。
请参阅 文档 以了解 Camera.main ,以及支持文档 "Camera.main is slow"。 Unity 2019.4.9 版本说明 简要说明:"Camera.main" 查询速度提升许多。 有关 Unity 2020.2 性能改进的博客文章 中包含“Optimised Camera.main ”的部分。
2026年 5月 8日