Unity中Profiler查看CPU性能参数,unity垂直同步VSync Count

本文详细介绍了在Unity中如何使用Profiler工具进行CPU性能优化,包括垂直同步的原理及其实现方式,如何理解并利用GC分配内存和Timems参数,垂直同步在不同设置下的表现,以及如何自定义查看函数性能。同时,文章还探讨了帧率与渲染时间的关系,以及垂直同步对帧率的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Unity中Profiler查看CPU性能参数
1.垂直同步的解释:
一个图像是由一个二维的矩阵(矩阵内是像素点)组成的,水平同步是每一行进行读取
垂直同步是竖向的同步
在这里插入图片描述当关闭垂直同步,可能就会产生上一帧还未显示完,下一帧的图像已经开始显示,出现图片撕裂,下图中下半部分红色部分是下一帧开始显示一半的图像,而上半部分依然是上一帧的画面
在这里插入图片描述2.垂直同步在Profile中的表现是:WaitForTargetFPS(当点击选中WaitForTargetFPS时淡黄色会呈现“高亮”状态,选中不同的函数会对应折线图中的颜色状态)
在这里插入图片描述cpu参数的说明:
GC分配的内存,(1)一次性不超过2KB。(2)每帧都具有20B以上的内存分配!,这两点要特别注意!!!!!
Time ms: 注意超过5ms的选项!!!
在这里插入图片描述VSync Count中的参数解释
0:Don’t Sync 不垂直同步 Application.targetFrameRate = -1
1:Every V Blank (fps = 60) Application.targetFrameRate = 60
2:Every Second V Blank (fps=30) Application.targetFrameRate = 30
当关闭垂直同步,但是设置Application.targetFrameRate = x的时候,垂直同步会默认开启!!
关于帧率:
帧率是一个我们谈论游戏性能的基本标准,但是当我们提升游戏性能时,更因该想到的是渲染一帧需要多少毫秒。帧率的相对改变在不同范围会有不同的变化。比如,从60到50FPS呈现出的是额外3.3毫秒的运行时间,但是从30到20FPS呈现出的是额外的16.6毫秒的运行时间。在这里,同样降低了10FPS,但是渲染一帧上时间的差别是很显著的。

渲染一帧所花费的时间: 我们还需要了解渲染一帧需要多少毫秒才能满足当前帧率。通过公式 1000/(想要达到的帧率)。通过这个公式可以得到,30FPS必须在33.3毫秒之内渲染完一帧,60FPS必须在16.6毫秒内渲染完一帧

3.自定义查看相关函数的性能:
步骤一
在这里插入图片描述步骤二,在profile中能够找到“sum_profile”的相关的性能参数
在这里插入图片描述特殊函数说明:
Physic.Simulate 统计当前帧物理模拟cpu占用
CameraRender 统计相机渲染准备工作cpu占用
OverHead 记录尚不明确的时间消耗cpu占用

4.垂直同步的实际应用:
垂直同步和帧率的设置,帧率配合垂直同步,能够看到帧率的明显变化!!
下图是KeyCode.A执行的帧率结果
在这里插入图片描述下图是KeyCode.D执行的帧率结果
在这里插入图片描述

### Unity在高刷新率手机上的发热问题及解决方案 #### 一、问题分析 在高刷新率手机上运行Unity应用时,设备可能会因为持续的高性能需求而过热。这种现象通常由以下几个因素引起: 1. **频繁的帧绘制** 高刷新率意味着每秒需要渲染更多的帧数(FPS)。如果游戏逻辑复杂或者场景较大,则可能导致CPU和GPU负载过高[^3]。 2. **不必要的计算开销** 如果未合理管理Draw Call数量以及资源加载方式,会增加CPU向GPU传输数据的压力,从而加剧功耗[^1]。 3. **垂直同步(VSync)**配置不当 当VSync被禁用(`Don't Sync`)时,虽然可以达到更高的理论帧率,但如果实际硬件无法支持如此高的频率,则可能造成额外的能量消耗并引发温度上升[^4]. 4. **GPU Skinning 的效率低下** 尽管新版Unity引入了`Compute Skinning`,但在某些情况下特别是移动端并未带来预期中的性能改进反而增加了负担因此需谨慎启用此功能[^1]. --- #### 二、解决策略 以下是几种有效的优化手段来降低因追求极致流畅体验而导致的热量累积: ##### 1. 控制目标帧速率(Target Frame Rate) 通过脚本设定固定的最高帧率为90fps或更低(视具体情况),这样既能满足大多数用户的视觉享受又能减少无谓的工作量. ```csharp using UnityEngine; public class FramerateController : MonoBehaviour { void Start() { Application.targetFrameRate = 90; } } ``` ##### 2. 调整VSync选项 依据不同机型调整合适的VSync模式。“Every V Blank”适合大部分情况;而对于极端条件下可尝试关闭同步以牺牲部分稳定性换取降温效果但要小心可能出现撕裂现象[^4]. ##### 3. 减少Draw Calls 数目 利用静态批处理(static batching),动态批处理(dynamic batching) 或者自定义Shader实现更高效的材质共享机制进而削减单独调用次数[^3]. ##### 4. 启动异步时间戳读取 (Asynchronous Timetamp Reading) 这允许主线程不必等待图形指令完成即可继续执行其他任务有助于缓解潜在卡顿同时也间接减轻整体负荷[^2]: ```csharp yield return new WaitForEndOfFrame(); // Or use custom coroutine logic based on your project needs ``` ##### 5. 关闭非必要特效 对于那些对表现力贡献较小却耗费大量算力的效果比如过多粒子系统应该考虑适时隐藏或者简化其结构. ##### 6. 定期检测热点区域 借助Profiler工具深入剖析哪些环节占用最多资源然后针对性地加以修正[^2]. --- ### 结论 综上所述,在开发面向高刷屏终端的作品过程中必须综合考量各方面要素才能既保持良好的互动感又兼顾能耗控制达成最佳平衡状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值