Unity3d客户端优化
2024-08-17 15:17:28 0 举报
AI智能生成
Unity3d客户端优化是一项关键的开发任务,旨在提升应用程序的性能和稳定性。优化过程可能包括降低资源占用、提高渲染效率、减少加载时间和改善网络通信等方面。这对于确保良好的用户体验和应用程序的成功至关重要。优化工作通常包括对场景进行优化、脚本优化、纹理优化以及内存管理等关键环节。其中,场景优化包括减少Draw Calls,使用遮挡剔除(Occlusion Culling)技术,以及合理布局场景以减少渲染消耗。脚本优化则涉及代码重构、避免频繁的GetComponent调用以及使用合适的数据结构等。纹理优化主要是降低纹理大小,使用压缩格式以及合理的Mipmap设置。内存管理则涉及到对象池、字符串拼接优化以及避免不必要的内存分配等方面。总的来说,Unity3d客户端优化是一个综合性的任务,需要全面考虑各个方面以实现最佳的性能。
作者其他创作
大纲/内容
至少20多FPS才能让画面看上去不难受
优化目标
事后发现问题,解决问题,代价总是很高的。
尽量做好日常保障,并且能第一时间发现问题。
概述
在程序设计和实现的时候 ,就考虑到性能优化
在数字内容制作之前,尽量约定好规格
每日构建和测试版本,记录性能指标。发现问题第一时间去找到和处理
方法
性能保障方案
数量决定CPU的负担
注意:平衡好模型合并和可见性裁剪的关系
尽可能的去合并可合并的模型
DrawPrimitive/Draw Call
检查是否有线程之间的等待
检查网络是否在独立的线程中操作了
线程
指令集
网络上可以搜到快速Sqrt的算法,如果精度能满足,就用哪个
有些高消耗的计算,如果可以预先把计算方法化简,或者预先可以知道结果,就预先做好公式简化或者替CPU算好。
化简或者预计算
sqrt
数学优化
有些数据如果可以预先存在内存的,就不要再运行时计算出来
空间换时间
有些公式如果预先可以算出结果的,就不要再运行时去运算。
预先算出结果
程序代码优化
CPU
在保证效果的情况下,尽量减少模型面数
通过可见性控制,降低同屏三角面数量
LOD
三角面
平衡好贴图尺寸和清晰度
生成mipmap
组织分配好图片元素的图集
让贴图尺寸是2的幂
压缩贴图
贴图
考虑Shader的复杂度对性能的影响
控制好半透明物体数量
材质
调整好摄像机远截面的距离
视距
控制好粒子数量
特效
减少Sampler函数
如果能预先算好,就尽量减少一些数学函数的调用。比如sqrt,三角函数等。
控制好数据运算精度
能在vs中处理的,尽量不在ps中处理
渲染管线/Shader
Graphic
IO操作时性能较低的操作,尽量不要再Update中篇幅的操作IO
是否有频繁的读写文件IO
是否有频繁的内存分配和释放
检查
IO
性能优化
Code Profiler
Render Profiler
Network Profiler
Memory Profiler
Physics Profiler
自带的Profiler
GOTLocal
GOT ONline
线上测评
线下深度优化
UWA
第三方
Unity引擎
优化工具
多线程
压缩更高效
利
开发效率稍低
弊
Protobuf
开发很便利
压缩效率和执行效率相对较低
JSON+gzip
消息压缩
网络优化
提高数据加载速度,让玩家尽快开始体验游戏
目的
加载到内存直接使用数据,不需要再对数据进行解析、组织等操作。
意义
数据序列化
延迟后台加载
加载优化
提高下载转化率
上架GooglePlay的包的一种优化方案
有些后期会用到的游戏内容,在游戏玩到一定阶段,触发后台下载。
延迟更新/下载
压缩格式
贴图压缩
降低码率
降低采样率
使用压缩格式
声音压缩
优化面数
优化顶点数据的位数
模型压缩
资源压缩
aab包
包体优化
内存
文件
网络
优化IO
优化CPU
优化渲染
考虑方向
耗电优化
更少的内存使用将获得更大的设备适配性
作用
模型
音效
游戏对象
举例
做好资源内存预算
尽量为各个系统预先分配好内存
做好系统内存预算
在开发的过程中,监控好内存的变化。在开发的前期,可能会超预算的使用,不过在后期就要开始寻找可优化的内容。
使用Profiler工具进行持续的记录。
做好内存监控
内存优化
客户端优化
0 条评论
回复 删除
下一页