1、硬件支持优化
(1)平台设置优化
减少FPS,在ProjectSetting-> Quality中的
VSync Count 参数会影响你的FPS,EveryVBlank相当于FPS=60,EverySecondVBlank = 30;
这两种情况都不符合游戏的FPS的话,我们需要手动调整FPS,首先关闭垂直同步这个功能,然后在代码的Awake方法里手动设置
FPS(ApplicationtargetFrameRate = 45;)
降低FPS的好处:
1)省电,减少手机发热的情况;
2)能都稳定游戏FPS,减少出现卡顿的情况。
当我们设置了FPS后,再调整下Fixed timestep这个参数,
这个参数在ProjectSetting->Time中,目的是减少物理计算的次数,来提高游戏性能。
(2)文件格式优化
1)Android 更新不透明贴图的压缩格式为ETC 4bit,因为Android市场的手机中的GPU有多种,每家的GPU支持不同的压缩格式,但他们都兼容ETC格式。iOS上尽量使用PVRTC。
2)对于透明贴图,我们只能选择RGBA 16bit 或者RGBA 32bit。
3)图集大小最好不要高于1024,否则游戏安装之后、低端机直接崩溃、原因是手机系统版本低于22、超过1000的图集无法读取、导致。22 以上没有遇见这个情况。注意手机的RAM 与 ROM、小于 512M的手机、直接放弃机型适配。
(3)Unity功能使用优化建议
Unity屏幕特效、动态的pixel光照计算(如法线)、实时的阴影,能找到替代方案就找替代方案。
2、渲染优化
(1)模型设置优化
1)合并材质球unity 3d中每倒入一次模型就多一个材质球,可我的这些模型都是共用一张贴图的就想共用一个材质球,所以每次都要删除再附上,很麻烦。怎么才能合并这些材质球?采用TexturePacking吧
1、遍历gameobject,取出material,并根据shader来将material分类
2、调用Unity自带的PackTextures函数来合并每个shader分类中的material所对应的textures(PackTextures函数有缺陷,不过可以将就用)
3、根据合并的大的texture来更新原有模型的texture、material已经uv坐标值。
需要注意的是:需要合并的纹理应该是物体在场景中距离相近的,如果物体在场景中的距离较远,
则不建议合并纹理,因为这样做很有可能非但起不到优化的作用,反而降低了运行效率。
2)mesh合并 分为2种方式合并
1自带的合并必须勾选静态。
2 脚本合并
优化建议(1)角色材质数2-3个 最多不要超过5个。可以采取2+3模式,2为主 3位辅助。
(2)骨骼数量最好控制在30
(3)面片数量根据实际需求做一定删减。比较低的控制在2000以下。
(4)静态物件不需要添加Animation Component
(5)UV值范围尽量不要超过(0, 1)区间
(6)地形长宽均尽量小于257。这是因为地形太大,会造成大量顶点数据,给你的内存带宽造成一定的影响,在目前的ios设备中,内存带宽是非常有限的,需要尽量节省。同时,如果用Unity自带的地形,一定也要使用Occlusion Culling,因为Unity的刷地形工具虽然方便,但却是framekiller,刷过之后,你会发现drawcall增加的非常多。混合纹理数量不要超过4。地形的混合 *** 作是很耗时的,应该尽量避免。能合并的纹理尽量合并。
(2)渲染批次优化
3、代码编程优化
Application类位于UnityEngine下,用于访问应用程序在运行时的一些数据。这个类不包含实例属性和实例方法,这就意味着在脚本中我们直接通过Application类来调用其静态的属性静态方法来控制程序运行时的数据。
虽然以上罗列的属性和方法官网API都有详细的介绍,但这里我用表格的形式展现出这些方法和属性,阅读起来更直观,同时我将常用的放在前面,功能相似的属性和方法放在一块,这样好做一个区分和比较。
第一篇文章就这样写完了,虽然没有写什么实质性的内容,但还是感觉蛮有成就感的,最重要的是已经迈出了第一步,敢写敢做,立马行动,以前知道写博客文章很重要,但是迟迟没有行动,所以说路在脚下,要敢于往前走。还有就是学会了使用markdown,一开始用的时候感觉挺不适应的,但慢慢写下来,熟悉了语法,觉得还是挺好用的,好处不用说,谁用谁知道。
今天只是一个开始,坚持!继续加油!
以上就是关于Unity关于性能方面的问题全部的内容,包括:Unity关于性能方面的问题、Unity API——Application类的详解(一):列举属性和方法、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)