1、Profiler中一项"WaitForTargetFPS"费资源过高的原因
画面撕裂,显卡渲染输出的速度与显示器不同步, 如果显示器刷新的同时,显卡创造了新的帧,就会出现上半显示器显示前一帧,下半显示器刷新到下一帧画面的“撕裂”现象。常见于高帧数显卡与低帧数显示器上~
垂直同步(V-Sync),通过延时让显卡等显示器输出完毕后再“生产”下一帧画面,将游戏帧数锁定到和你的显示器刷新频率一样,从而达到画面的同步。
WaitForTargetFPS,是用于防止撕裂的。WaitForTargetFPS消耗越高,说明被压缩的帧数越多,Setting里关掉垂直同步就可以了
FreeSync技术则是让显示器的刷新率不再固定为60Hz,成为一个动态变量,当显卡完整渲染完一张画面后,显示器就可以输出了。 最大化发挥显卡性能,不会因垂直同步而掉帧
2、代码细节优化
  • 协程比Update节能,尽量不要在update函数中做复杂计算,有需要可以隔N帧计算一次
  • 不用的事件函数如Update应该删除
  • 简化计算,如用乘法代替除法,少用复杂的数学函数,用合适的精度
  • 减少使用临时变量,尽量优化循环的时间空间复杂度
  • 减少动态的生成字符串,用StringBuilder
  • 减少使用Find,GetComponent等耗时API,可以在start中预先存起来
  • 减少函数调用栈,用x = (x > 0 ? x : -x);代替x = Mathf.Abs(x)
  • 尽量不要在方法中动态new array,推荐用类变量或者传入参数
  • OnGUI少用,最好只在一个脚本中使用。用UGUI
3、用Profiler优化
  • ProcessRemoteInput 是引擎在Editor下调用的东西……
  • Log中可以找到所有打包的资源(AssetHunter)
4、场景优化
  • 无用的组件比如Animation最好移除
  • 少用耗性能的碰撞体,比如mesh,wheel,sphere...尤其是移动端
  • 不要在场景预先放好太多东西,而是用动态生成,逐渐加载
  • 阴影=阴暗+影子,建议使用实时影子时把阴暗效果烘焙出来,不要使用灯光来调节光线阴暗。
  • 在效果相似时选择最节能的。比如硬阴影,低分辨率贴图,static光照烘焙,少用法线贴图,优化粒子特效或用UV动画
  • 大场景中使用线性雾,使远距离对象或阴影不易察觉,因此可通过减小相机和阴影距离来提高性能
  • 使用遮挡剔除,LOD
  • 用skybox做远景
5、资源加载优化
  • 使用对象池
  • 合并使用同贴图的材质球,合并使用相同材质球的Mesh
  • 动画文件我们是单独分离出来的,以供多角色共用
  • 减少模型面数和总数。但是场景不用合并成一个mesh,这样会使得同屏的面数增加
  • 将透明通道的对象置于TransparentFX图层。Tag,Hieratchy,Layer养成良好的条理化习惯
  • Mesh的压缩仅仅是减少打包文件的大小,并不会减少运行时的内存消耗。而减少动画关键帧,则会让两者都有所减少,一般情况下我们都应该开启。
  • 减少手机上使用的 .NET 库的大小,通常用 .NET 2.0 Subset ,另外Unity会自动随着API的使用提高安卓版本
Textures资源设置
  1. 对于Texture等资源来说, Unity会把资源再编码成它自己的内部格式,所以源文件格式并不重要。而内部格式文件占空间越小,存储空间优化就越好
  2. 可以用压缩来优化存储空间,但会损失一些时间,而且内存消耗不变
6、Shader优化
  1. 少使用的函数:pow,sin,cos等
  2. 用合适大小的数据类型
  3. 对于不支持的设备不使用逐像素、实时阴影、屏幕特效等画面效果。Shader要做到平台适用且高效
7、内存管理,GC回收
  1. Mono堆内存回收用 System.GC.Collect(); 可避免系统在不合适的时间进行自动GC
  2. Unity内存回收用 Resources.UnloadUnusedAssets(); 其内部本身也会调用 GC.Collect()
  3. AssetBundle.Unload 释放AssetBundle文件内存镜像
  4. Reources.UnloadAsset(Object) 释放硬盘加载的所有Asset资源,慎用

转载于:https://www.cnblogs.com/sols/p/8455466.html

【总结】Unity游戏优化相关推荐

  1. Unity游戏优化[第二版]学习记录6

    以下内容是根据Unity 2020.1.01f版本进行编写的 Unity游戏优化[第二版]学习记录6 第6章 动态图形 一.管线渲染 1.GPU前端 2.GPU后端 3.光照和阴影 4.多线程渲染 5 ...

  2. Unity游戏优化指南大全(持续更新中!)

    Unity游戏优化指南大全 三个官方优化提示: 性能和优化 (Performance and Optimization) - 关于性能分析器以及性能和优化技巧的 Unity 学习教程. Best pr ...

  3. Unity游戏优化(第2版)学习记录8

    Unity游戏优化[第二版]学习记录8 第8章 掌握内存管理 一.Mono平台 1.垃圾回收 2.内存碎片 3.运行时的垃圾回收 4.多线程的垃圾回收 二.代码编译 三.分析内存 1.分析内存消耗 2 ...

  4. 《Unity游戏优化》第三章 批处理

    动态批处理.静态批处理.GPU Instancin 和SRP Batcher 批处理原理 批处理设置 Frame Debugger 1. 动态批处理 动态批处理使用场景 动态批处理优势: 动态批处理缺 ...

  5. Unity游戏优化[第二版]学习记录4

    Unity游戏优化[第二版]学习记录4 第4章 着手处理艺术资源 一.音频 1.导入音频文件 2.加载音频文件 3.编码格式与品质级别 4. 音频性能增强 二.纹理文件 1.纹理压缩格式 2.纹理性能 ...

  6. 【游戏优化】AOI算法、Unity游戏优化(一)

    Unity游戏优化.内存优化.资源优化.AOI算法.安全 AOI概念和设计 地图广播(地图消息同步) AOI解决的问题 AOI的设计 场景分析与方案设计(一) 改善方案 场景分析与方案设计(二) 场景 ...

  7. 《Unity游戏优化》笔记(4)[21/02/05_周五][P29_46]

    目录 第2章 脚本策略 (P29) 2.1 使用最快的方法获取组件 2.2 移除空的回调定义 (P31) 2.3 缓存组件索引 (P34) 2.4 共享计算输出 2.5 Update.Coroutin ...

  8. 《Unity游戏优化》笔记(8)[21/02/09_周二][P97_115]

    目录 第4章 着手处理艺术资源 4.1 音频 (P97) 4.1.1 导入音频文件 4.1.2 加载音频文件 4.1.3 编码格式和品质级别 (P101) 4.1.4 音频性能增强 (P103) 4. ...

  9. Unity游戏优化(第二版)阅读笔记

    目录 前言 笔记 总结 前言    最近突然想了解一下游戏引擎中渲染部分是怎么优化的,所以在某平台上买了这本电子书,当初只是想了解行业技术,觉得翻译太浪费时间,所以买了这边.现在觉得这种选择是正确的, ...

  10. 《Unity游戏优化》笔记(11)[21/03/08_周一][126_132]

    目录 5.1.2 静态碰撞器和动态碰撞器 5.1.3 碰撞检测 5.1.4 碰撞器类型 5.1.5 碰撞矩阵 5.1.6 Rigidbody激活和休眠状态 5.1.7 射线和对象投射 5.1.8 调试 ...

最新文章

  1. 分页与无限滚动在评论区的设计差异
  2. numpy 之 np.diff函数
  3. javafx由浅到深的 认识(一)
  4. .NET 平台采用率的提升归功于开源
  5. 客户机和服务器在s7通信中各有什么作用,哪些通信口可以进行 Modbus TCP 通讯,作为 Modbus 服务器的 SIMATIC S7 CPU 可以...
  6. 【BZOJ - 1059】矩阵游戏(二分图匹配,建图,最小边覆盖)
  7. jpa mysql存储过程_spring data jpa 如何调用mysql存储过程?
  8. Mysql 8 驱动问题:报错Unknown system variable 'query_cache_size'
  9. vscode中控制台不能输入_vscode调试时如何在控制台输入
  10. 两天,我把分布式事务搞完了!
  11. jQuery基础之操作属性或文本及其样式 位置 尺寸的方法(重点,常用)
  12. 3G时代日本手机咸鱼难翻身
  13. xampp的安装及使用
  14. springboot配置redis(单节点)
  15. PRN(20210421):Task-Free Continual Learning
  16. Citrix Receiver for Linux安装和cert证书添加解决SSL错误
  17. Zoho 企业邮箱不可用修复方案
  18. 红米note5手机插u盘没反应_U盘插到充电器上会损坏?爆炸?实验结果没让我失望...
  19. 什么是内存对齐?如何计算内存对齐?为什么要内存对齐?
  20. mysql 围栏_地理围栏

热门文章

  1. linux+git登陆,图解如何在Linux上配置git自动登陆验证
  2. babel import语法 js_webstorm配置babel自动转译es6的两种方法
  3. L3-014 周游世界 (30分)
  4. spring简易学习笔记四(jdbcTemplate和事务控制)
  5. @Transactional什么情况才生效
  6. 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_39、SpringBoot2.x整合redis实战讲解...
  7. 阶段3 3.SpringMVC·_05.文件上传_3 文件上传之Springmvc方式上传原理分析
  8. 阶段3 1.Mybatis_07.Mybatis的连接池及事务_1 今日课程内容介绍
  9. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_5_Lambda表达式的无参数无返回值的...
  10. 如何打造一款可靠的WAF(Web应用防火墙)