【总结】Unity游戏优化
- 协程比Update节能,尽量不要在update函数中做复杂计算,有需要可以隔N帧计算一次
- 不用的事件函数如Update应该删除
- 简化计算,如用乘法代替除法,少用复杂的数学函数,用合适的精度
- 减少使用临时变量,尽量优化循环的时间空间复杂度
- 减少动态的生成字符串,用StringBuilder
- 减少使用Find,GetComponent等耗时API,可以在start中预先存起来
- 减少函数调用栈,用x = (x > 0 ? x : -x);代替x = Mathf.Abs(x)
- 尽量不要在方法中动态new array,推荐用类变量或者传入参数
- OnGUI少用,最好只在一个脚本中使用。用UGUI
- ProcessRemoteInput 是引擎在Editor下调用的东西……
- Log中可以找到所有打包的资源(AssetHunter)
- 无用的组件比如Animation最好移除
- 少用耗性能的碰撞体,比如mesh,wheel,sphere...尤其是移动端
- 不要在场景预先放好太多东西,而是用动态生成,逐渐加载
- 阴影=阴暗+影子,建议使用实时影子时把阴暗效果烘焙出来,不要使用灯光来调节光线阴暗。
- 在效果相似时选择最节能的。比如硬阴影,低分辨率贴图,static光照烘焙,少用法线贴图,优化粒子特效或用UV动画
- 大场景中使用线性雾,使远距离对象或阴影不易察觉,因此可通过减小相机和阴影距离来提高性能
- 使用遮挡剔除,LOD
- 用skybox做远景
- 使用对象池
- 合并使用同贴图的材质球,合并使用相同材质球的Mesh
- 动画文件我们是单独分离出来的,以供多角色共用
- 减少模型面数和总数。但是场景不用合并成一个mesh,这样会使得同屏的面数增加
- 将透明通道的对象置于TransparentFX图层。Tag,Hieratchy,Layer养成良好的条理化习惯
- Mesh的压缩仅仅是减少打包文件的大小,并不会减少运行时的内存消耗。而减少动画关键帧,则会让两者都有所减少,一般情况下我们都应该开启。
- 减少手机上使用的 .NET 库的大小,通常用 .NET 2.0 Subset ,另外Unity会自动随着API的使用提高安卓版本
- 对于Texture等资源来说, Unity会把资源再编码成它自己的内部格式,所以源文件格式并不重要。而内部格式文件占空间越小,存储空间优化就越好
- 可以用压缩来优化存储空间,但会损失一些时间,而且内存消耗不变
- 少使用的函数:pow,sin,cos等
- 用合适大小的数据类型
- 对于不支持的设备不使用逐像素、实时阴影、屏幕特效等画面效果。Shader要做到平台适用且高效
- Mono堆内存回收用 System.GC.Collect(); 可避免系统在不合适的时间进行自动GC
- Unity内存回收用 Resources.UnloadUnusedAssets(); 其内部本身也会调用 GC.Collect()
- AssetBundle.Unload 释放AssetBundle文件内存镜像
- Reources.UnloadAsset(Object) 释放硬盘加载的所有Asset资源,慎用
转载于:https://www.cnblogs.com/sols/p/8455466.html
【总结】Unity游戏优化相关推荐
- Unity游戏优化[第二版]学习记录6
以下内容是根据Unity 2020.1.01f版本进行编写的 Unity游戏优化[第二版]学习记录6 第6章 动态图形 一.管线渲染 1.GPU前端 2.GPU后端 3.光照和阴影 4.多线程渲染 5 ...
- Unity游戏优化指南大全(持续更新中!)
Unity游戏优化指南大全 三个官方优化提示: 性能和优化 (Performance and Optimization) - 关于性能分析器以及性能和优化技巧的 Unity 学习教程. Best pr ...
- Unity游戏优化(第2版)学习记录8
Unity游戏优化[第二版]学习记录8 第8章 掌握内存管理 一.Mono平台 1.垃圾回收 2.内存碎片 3.运行时的垃圾回收 4.多线程的垃圾回收 二.代码编译 三.分析内存 1.分析内存消耗 2 ...
- 《Unity游戏优化》第三章 批处理
动态批处理.静态批处理.GPU Instancin 和SRP Batcher 批处理原理 批处理设置 Frame Debugger 1. 动态批处理 动态批处理使用场景 动态批处理优势: 动态批处理缺 ...
- Unity游戏优化[第二版]学习记录4
Unity游戏优化[第二版]学习记录4 第4章 着手处理艺术资源 一.音频 1.导入音频文件 2.加载音频文件 3.编码格式与品质级别 4. 音频性能增强 二.纹理文件 1.纹理压缩格式 2.纹理性能 ...
- 【游戏优化】AOI算法、Unity游戏优化(一)
Unity游戏优化.内存优化.资源优化.AOI算法.安全 AOI概念和设计 地图广播(地图消息同步) AOI解决的问题 AOI的设计 场景分析与方案设计(一) 改善方案 场景分析与方案设计(二) 场景 ...
- 《Unity游戏优化》笔记(4)[21/02/05_周五][P29_46]
目录 第2章 脚本策略 (P29) 2.1 使用最快的方法获取组件 2.2 移除空的回调定义 (P31) 2.3 缓存组件索引 (P34) 2.4 共享计算输出 2.5 Update.Coroutin ...
- 《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. ...
- Unity游戏优化(第二版)阅读笔记
目录 前言 笔记 总结 前言 最近突然想了解一下游戏引擎中渲染部分是怎么优化的,所以在某平台上买了这本电子书,当初只是想了解行业技术,觉得翻译太浪费时间,所以买了这边.现在觉得这种选择是正确的, ...
- 《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 调试 ...
最新文章
- 分页与无限滚动在评论区的设计差异
- numpy 之 np.diff函数
- javafx由浅到深的 认识(一)
- .NET 平台采用率的提升归功于开源
- 客户机和服务器在s7通信中各有什么作用,哪些通信口可以进行 Modbus TCP 通讯,作为 Modbus 服务器的 SIMATIC S7 CPU 可以...
- 【BZOJ - 1059】矩阵游戏(二分图匹配,建图,最小边覆盖)
- jpa mysql存储过程_spring data jpa 如何调用mysql存储过程?
- Mysql 8 驱动问题:报错Unknown system variable 'query_cache_size'
- vscode中控制台不能输入_vscode调试时如何在控制台输入
- 两天,我把分布式事务搞完了!
- jQuery基础之操作属性或文本及其样式 位置 尺寸的方法(重点,常用)
- 3G时代日本手机咸鱼难翻身
- xampp的安装及使用
- springboot配置redis(单节点)
- PRN(20210421):Task-Free Continual Learning
- Citrix Receiver for Linux安装和cert证书添加解决SSL错误
- Zoho 企业邮箱不可用修复方案
- 红米note5手机插u盘没反应_U盘插到充电器上会损坏?爆炸?实验结果没让我失望...
- 什么是内存对齐?如何计算内存对齐?为什么要内存对齐?
- mysql 围栏_地理围栏
热门文章
- linux+git登陆,图解如何在Linux上配置git自动登陆验证
- babel import语法 js_webstorm配置babel自动转译es6的两种方法
- L3-014 周游世界 (30分)
- spring简易学习笔记四(jdbcTemplate和事务控制)
- @Transactional什么情况才生效
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_39、SpringBoot2.x整合redis实战讲解...
- 阶段3 3.SpringMVC·_05.文件上传_3 文件上传之Springmvc方式上传原理分析
- 阶段3 1.Mybatis_07.Mybatis的连接池及事务_1 今日课程内容介绍
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第6节 Lambda表达式_5_Lambda表达式的无参数无返回值的...
- 如何打造一款可靠的WAF(Web应用防火墙)