当前位置: 首页 >  在线学习 >  Unity性能优化(一) 总览篇

Unity性能优化(一) 总览篇

导读:优化目的.达成目标帧率.运行帧率 稳定.确保目标画质.优化参与角色.优化需要整个团队一起来做,不是某个“神人”可以搞定一切的。.三个关键职能:.美术:建模、贴图、绑定、动作、关卡搭建.技术美术(如果有):材质、Shader编程、特效制作.程序:游戏逻辑编程.优化流程.性能分析工具

优化目的

  1. 达成目标帧率
  2. 运行帧率 稳定
  3. 确保目标画质

优化参与角色

优化需要整个团队一起来做,不是某个“神人”可以搞定一切的。
三个关键职能:

  • 美术:建模、贴图、绑定、动作、关卡搭建
  • 技术美术(如果有):材质、Shader编程、特效制作
  • 程序:游戏逻辑编程

优化流程

性能分析工具

  • Unity Profiler(主要)
  • Frame Debugger
  • Physics Debugger
  • UIElements Debugger
  • IMGUI Debugger
  • Memory Profiler (Package Manager提供)
  • Profile Analyzer (Package Manager提供)

优化时所用环境

  1. 编辑器中运行
  2. 真机中运行
    • 在构建时建议勾选 Development Build 和 Autoconnect Profiler

帧率

目标帧率

  • 大多数游戏:60 FPS
  • 移动游戏(普通):30 FPS
  • 移动游戏(高端):60 FPS
  • VR:不同设备要求不同,但基本要求在 70 FPS以上。

每帧事务

渲染一帧所需要时间 > CPU计算所需时长 + GPU消耗所需时长
每帧中所有事务完成得足够快时,游戏流畅运行;每帧中所有事务完成得不够快时,游运行卡顿。

CPU事务

  • Skinning
  • Batching(Static Batching、Dynamic Batching 等)
  • 物理相关计算
  • 粒子效果
  • 用户脚本(处理玩家输入等)
  • ……

GPU事务

  • Shader
  • DrawCall
  • Image Effects(后处理)

CPU与GPU并不各自孤立:

如果 CPU 在物理计算和脚本运行要花很多时间,那么即使 Shader 优化得再好,也不会提高帧率;
如果 GPU 处理 Shader 消耗大量时间,那么即使优化物理系统和脚本也不会对提高帧率有什么帮助。
当 CPU 压力大,而 GPU 压力小时,就不应该采取一些加大 CPU 压力以减少 GPU 压力的方法。反之亦然。

因此我们要分析找到影响运行性能的短板

内容
  • 一文揭秘DDD到底解决了什么问题
    一文揭秘DDD到底解决了什么问题
    2023-12-01
    DDD作为架构设计思想帮助微服务控制规模复杂度,那它是怎么做到的呢?.一、架构设计是为了解决系统复杂度.谈到架构,相信每
  • Unity实现3D物体遮挡血条
    Unity实现3D物体遮挡血条
    2023-12-08
    Unity 实现3D物体遮挡血条.######.前言:在游戏开发中,我们经常会遇到UI和3D物体的层级遮挡问题,最常见的
  • 一个公式让你35岁以后能越过越好!大神修炼心法
    一个公式让你35岁以后能越过越好
    2023-12-08
    前言.Cocos 的老铁,如果你这几天没有被麒麟子给卷到?那说明你还没有真正进入 Cocos 圈子里来。为什么这么说呢?
  • C++学习-static
    C++学习-static
    2023-12-02
    全局变量使用:.作用是限定全局变量的作用范围,只能在当前文件使用,类似给它加了个private属性。.其他文件即使使用e
  • 【Oculus Interaction SDK】(五)设置不同的抓握手势
    【Oculus Interact
    2023-12-10
    前言.前段时间 Oculus 的 SDK.频繁更新,很多已有的教程都不再适用于现在的版本了。本系列文章的主要目的是记录现
  • 吃透单调栈(2)——解两道Hard题:接雨水、柱状图中最大的矩形问题
    吃透单调栈(2)——解两道Har
    2023-12-04
    怎么想到要用单调栈的?.这类题目的数据通常是一维数组,要寻找任一个元素的右边或者左边第一个 比自己大 或者小 的元素的位