【解决】Unity Profile | FindMainCamera

开发平台:Unity 2020.3.7f1c1

关键词:FindMainCamera

问题背景


  • ModelViewer 是开发者基于 UnityEngine 编写的相机控制组件。
  • ModelView.Update 中调度52次并触发3次GC.Collect。显然并不期望并尽可能避免 Update 造成的GC 问题。
  • 事实上 FindMainCamera 并不属于脚本内部直接调用所造成。而是通过 Unity API 间接调用造成。

追溯触发 FindMainCamera 来源


这似乎是 Camera.main 造成的。在 ModelView.Update 中引用 Main Camera 检测鼠标是否触碰在 UI 上时造成的。Camera.main 估计类似于 Camera.FindObjectWithTag("MainCamera").GetComponent<Camera>() 形式,每帧执行 FindMainCamera 方法。实际上,Main Camera 的查找仅一次就足够。

解决方式


使用全局变量存储 Main Camera 对象。避免高频下使用 Camera.Main 进行 Main Camera 引用。

相关推荐
龚子亦1 天前
【Unity开发】热更新学习——HybridCLR框架
学习·unity·游戏引擎·热更新
龚子亦1 天前
【GameFramework框架】FSM使用
学习·unity·游戏开发·游戏框架
龚子亦1 天前
【Unity开发】安卓应用开发中,用户进行权限请求
android·unity·安卓权限
君莫愁。1 天前
【Unity】相机与UI的自适应
ui·unity·c#·游戏引擎
lrh30252 天前
Custom SRP - 16 Render Scale
3d·unity·srp·render pipeline·render scale
ellis19702 天前
Unity出安卓包知识点汇总
android·unity
Robot侠2 天前
ROS1从入门到精通 2:ROS1核心概念详解(节点、话题、服务一网打尽)
unity·游戏引擎·ros·机器人操作系统
世洋Blog3 天前
装饰器模式实践:告别臃肿的继承链,优雅解耦初始化状态管理
unity·设计模式·c#·装饰器模式
老朱佩琪!3 天前
Unity原型模式
开发语言·经验分享·unity·设计模式·原型模式
老朱佩琪!3 天前
Unity组合模式
unity·游戏引擎·组合模式