Unity关于性能方面的问题

如题所述

1、硬件支持优化

(1)平台设置优化

减少FPS,在ProjectSetting-> Quality中的
VSync Count 参数会影响你的FPS,EveryVBlank相当于FPS=60,EverySecondVBlank = 30;
这两种情况都不符合游戏的FPS的话,我们需要手动调整FPS,首先关闭垂直同步这个功能,然后在代码的Awake方法里手动设置
FPS(Application.targetFrameRate = 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,否则游戏安装之后、低端机直接崩溃、原因是手机系统版本低于2.2、超过1000的图集无法读取、导致。2.2 以上没有遇见这个情况。注意手机的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、代码编程优化

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网