您的位置:首页 > 移动开发 > Unity3D

【转】unity的优化心得

2013-08-26 11:34 183 查看
图形显示的优化 简单来说就是「结合!结合!结合!」(combine! combine! combine!) Mesh 尽可能结合,Material 和Texture 尽可能共用。 一个Mesh 建议使用的面数在1500~4000 之间。 一个 Mesh 建议只用一个 Material。 注意:两个Mesh结合成一个Mesh,但是却使用两个Material,并不会提高效能。 如果要提高效能必须把这两个Mesh的Material也合并成一个。 换句话说,一个Mesh使用多个Material 和一个Material 使用多个render,其实耗能是差不多的。 所以,尽可能的让物件共用相同的Texture 才是提升效能的根本之道。 Pixel Light Pixel Light 非常耗能,如果想要在旧电脑上也跑得很顺, Render Settings 中把Pixel Light Count 設成0。">可以在Edit->Render Settings 中把Pixel Light Count 设成0。 (完全不使用 Pixel Light) 你也可以根据每个Light 的重要度,分别设定。 重要度高的Render Mode 设成Force Pixel 。 不重要的设成 Force Vertex。 Layer 管理 地上的小石头或瓦砾之类的小东西产生的影子比较不明显, 我们可以把这些东西设在同一个图层。 并利用script中Camera.layerCullDistances 功能变更参数控制显示的距离。 function Start () { var distances = new float[32]; // Set up layer 10 to cull at 15 meters distance. // All other layers use the far clip plane distance. distances[10] = 15; camera.layerCullDistances = distances; } Shadow 影子的计算完全依靠 GPU。 Soft shadow 比 hard shadow 多花费GPU效能。但是两者使用的CPU 与记忆体是相同的。 Anti-aliasing 也是完全靠 GPU计算。 Anisotropic Textures 也是完全靠GPU计算,建议在天花板或是地板的Texture 上使用。
■Texture 2D Unity 读取PSD档之后,会自动将图档平面化缩压,并不会让制作的游戏变大。 Texture 的长宽的大小最好由下列数字中挑选:2、4、8、16、32、64、128、256、512、1024、2048。 Texutre 不一定要是正方形的,长方形也可以。 如果Texture 的大小不是由上方数字所组成的,那么图形将会稍微多耗用一些的显卡的记忆体,读取时也会稍微变慢。 所以特殊的Texture 大小建议只使用在GUI 上。 Mip Maps 使用Mip Maps 大约会多占用33%的记忆体,但是可以大幅提升效能。 所有的Texture 都建议使用Mip Maps,唯一不需要使用的是GUI的Texture。 ■Shader 效能(Normal、Transparent、Transparent Cutout、Self-Illuminated、Reflective、Lightmap) 由上→下,左→右,愈来愈耗能。 Decal">Vertex_Lit -> Decal Diffuse Fast -> Diffuse ->Diffuse Detail">-> Diffuse Fast -> Diffuse ->Diffuse Detail Bumped ->Specular ->Bumped Specular">->Bumped ->Specular ->Bumped Specular Parallax Bumped -> Parallax Bumped Specular">-> Parallax Bumped -> Parallax Bumped Specular 附件中有比较清楚的图示。
■角色(charcater)最佳化 一、每个Mesh只使用一个Skinned Mesh Renderer。 二、不要使用太多的Material。 唯一需要使用不同的Material 的原因,应该是你想要使用不同的shader。 一个角色使用2~3 Material 应该就能充份表现效果。 如果角色可能会换武器,人物和武器的Material应该要分开, 三、减少 bone 的数量 角色bone的数量限制通常在15~60 之间,通常30 个bone 已经可以做到很好的效果。 强烈建议一个角色的bone 数量在30 个以内。 四、polygon 面数 面数建议在 500~6000之间。 HL2 的面数是2500~5000、次世代游戏角色的面数在5000~7000。 五、将IK 与 FK 严格区分 因为Unity 不需要IK 的资料,这么做可以让你很方便地删除IK 资料。 六、使用可重覆利用的 Rig 这样可以让不同的角色使用相同的动画。 七、正确命名每一个bone 正确命名每一个bone之后,使用Ragdoll功能将会事半功倍。否则将骨架设定正确将花费你许多时间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: