马上注册,加入CGJOY,让你轻松玩转CGJOY。
您需要 登录 才可以下载或查看,没有帐号?立即注册
×
平时总结了一些优化技巧,仅当抛砖引玉,如有不足,多多指教。 1:粒子大小,如果可以的话,粒子的size应该尽可能地小。因为Unity的粒子系统的shader无论是alpha test还是alpha blending都是一笔不小的开销。同时,对於非常小的粒子,建议粒子纹理去掉alpha通道。大块的特效最好在模型上面做,不好用粒子。 2:大面积使用的粒子,或者模型,尽量使用add模式,因为blend模式会渲染通道,消耗比较大的内存。 3:如果粒子叠加层次比较多,尽量使用中空模型,会大大降低渲染的压力。 如图,如用到大面的环形效果,建议用右边的模型,中空,降低渲染压力。 4: shader的使用方面,特效一般情况使用mobile模式下的shader,如有特殊需求,可以用shader forge做shader,并由程序优化至确认可以使用。 5:粒子系统的使用方面,每个发射器发射多少个粒子,最大粒子数就写多少个,因为最大粒子数默认的1000个是粒子池,会占用内存。粒子特效基本不接收光影和产生光影,故光影的效果选项去掉。如下图: 6:大部分特效不要加入灯光,如想表现灯光效果,可以用glow模拟光照效果。
7:特效中需要用的模型资源能合并,尽量在max中合并,因为在unity中,模型只要k了动画就算一个dc,如果模型事先没在max中合并,几个模型就有几个dc,例如翅膀特效。 就可以把模型做好都合并在一起,然后通过shader走uv,这样只会有1个dc 8: 特效中用到的模型只使用一个skinned mesh renderer,角色方面也建议如此。
9: 如需用到骨骼动画,骨骼数量不要超过30。
10:不要使用mesh collider,特效中的mesh都要去掉该组件。 11:持续循环类特效发射周期尽量的大,因为周期如果很小,就会不断的生成发射器,这对cpu也有一定影响。如下图默认是5,调整到99999。 12: 粒子系统中,关于透明度与粒子数量的关系,尽量如图一,不要出现图二的情况; 13:特效中如果要k动画,那么animator组件应该位于特效最上层级的下一级。其他所有层级均在动画层级之下。 14:贴图压缩格式:iOS上尽量使用PVRTC,Android上使用ETC 15:图集大小最好不要高于1024,否则游戏安装之后、低端机直接崩溃、原因是手机系统版本低于2.2、超过1000的图集无法读取导致。 16:特效中的mesh勾选静态 以便合并 17:unitypackage文件最终大小最好保持在1.2MB以下。贴图为带通道PNG贴图,最大不超过512*512。 单个贴图尽量控制64x64,细节比较多,经常用于大面积地方的贴图128x128,序列用于技能的不要超过256x256,用于全屏ui的序列,最大不要超过512x512,原则上不建议用序列,尽量用单个贴图,通过溶解等shader来实现序列效果。
所有贴图大小尺寸为1:1,2的幂次方。 18:特效中用到的模型面数要尽量控制,选择合理的制作方法,避免出现高面数的模型。 19: 新导入的模型都必须去掉这个选项。 20:如果模型不带动画,选择该模式。 21:由于项目是3d项目,所以在特效制作方面,能用3d的手法就不要用很大的序列图。浪费很大资源,如有需要2d动效,可以用2d骨骼软件。输出蒙皮信息结合3d粒子效果。
个例:如何减少DC 这是我们的受击特效。DC是5个 如果创建N个的话 DC会怎么样呢? 可以看到Batches 1257....难怪卡死了.... 这个特效是由5个例子特效组成的。我把每个粒子特效的OrderInLayer重新设置。2000,2001,2002,2003,2004 确保每个粒子的OrderInLayer不同.不要重复. 接下来就是见证奇迹的时候了......0 0、 可以看到重复创建的特效都跑到Saved by batching了。 大家理解了吗?特效又有新的事情要做了。 PS:关于单个特效也是能优化的。原理是一样的 这是一个散射子弹的特效。看这个特效的结构是相同的特效复制了5份换成了不同的角度。 我还是一样的把OrderInLayer重新设置了。不过每个sq_skill_3_ball,sq_skill_3_fire,sq_skill_3_light都是设置成一样的。 再一次见证奇迹的时刻- -、 没修改前DC的顶峰会随时间在12-16徘徊。 修改后DC的顶峰稳定在8. |