美文网首页
unity 优化笔记

unity 优化笔记

作者: hardac | 来源:发表于2015-09-13 08:37 被阅读0次

    unity 打包资源包含哪一些:

    1. resources文件下被程序应用的资源。优化方案:

    ①对删除被引用文件内没有被用到的资源。

    ② 尽量把需要用到同时在一起出现的纹理放在一个图集中。

    2. streamingAssets文件夹下面的所有资源。优化方案:

    ① 删除不必要的资源,比如不要把安卓下的资源打包到iphone中。

    ② 在大bundle的时候,可以考虑bundle的压缩。

    把资源打成bundle对资源的影响

    优点:会降低包的的大小。

    缺点:需要花一点时间进行减压资源。

    纹理格式对性能和包大小影响

    对没有特殊要求的图片:

    安卓

    通常使用RGBA16 ,1024*1024 资源大小和占内存都是 2M

    推荐使用 ETC + A , 1024 * 1024资源大小和内存大小 1M(只有在openGL 2.0以上可以使用,因为在GPU不支持ETC时,会把压缩的图减压成原图大小及RGBA32)。

    ios

    通常使用pvrtc,1024 * 1024资源大小和占内存都是1M。

    注意:在移动平台上一个好的压缩格式,可以减小包和咱内存的大小。假如要支持多个平台,建议对不同平台进行相应的压缩。

    压缩格式缺点:由于图片被压缩了,所以在一定程度会出现一点折损。有的时候会出现黑边情况。当有图有这种情况时,建议使用原图,不要压缩。

    drawcall优化

    优化drawcall关键在于----效果,粒子,材质,pass等等。

    动画的优化

    可以考虑最后的死亡动画和其他动画分离开来。

    灵活性更高,可以使用不同的材质用于死亡

    减少对其他脚本的维护

    针对低端机优化

    设备不同的代支持不同功能,性能差别很大。应查询设备的代,并确定应禁用哪些功能以补偿较慢的设备

    shader 优化

    在手游,由于对性能要求比较高,所以不建议使用SurfaceShader。因为SurfaceShader是一个比较“通用”的功能,而通用往往导致性能不高

    特征是在SubShader里出现CGPROGRAM和ENDCG块。(而不是出现在Pass里。因为SurfaceShader自己会编译成多个Pass。)

    动画的优化

    使用身体遮蔽的好处是它们有助于减少内存开销,因为不活动的身体部位无需关联动画曲线。此外,不使用的曲线无需在播放过程中进行计算,这有助于减少动画的 CPU 开销。

    优化内置 iOS 播放器的大小

    减少播放器大小的两种主要方式是更改 Xcode 中的活动生成配置 (Active Build Configuration) 以及更改 Unity 的剥离级别 (Stripping Level)

    如何让发布版本尽可能的小的简单清单。

    最小化资源:启用 PVRTC 纹理压缩,尽可能降低其分辨率。同时,尽量减少未压缩的音频数量。点击此处,查看更多减少文件大小的提示。

    设置 iOS 剥离级别为使用 micro mscorlib。

    设置脚本调用优化级别为快速但不支持异常 (Fast but no exceptions)。

    切勿让代码与 System.dll 或 System.Xml.dll 产生任何关联,这些库不 与 micro mscorlib 兼容。

    删除不必要的代码依赖性。

    设置 API 兼容级别为 .Net 2.0 子集。请注意,.Net 2.0 子集与其他库的兼容性非常有限。

    设置目标平台 (Target Platform) 为 armv6 (OpenGL ES1.1)。

    切勿使用 JS 数组。

    避免泛型容器与结构等数值类型相结合。

    注意: 但凡方便的功能,里面就必然有性能陷阱

    对图集压缩时,一定要注意,图集必须是正方形,同时图集的长和宽必须是2的幂。

    把200M的安装包压缩到50M安装包的方法:

    把所有能压缩的纹理都压缩。ios 选着使用pvrtc ,安卓使用ETC+apl 通道。

    把所有的大图拆成小图。

    把能放到资源负上的资源,都放到资源服上,进行动态加载。

    相关文章

      网友评论

          本文标题:unity 优化笔记

          本文链接:https://www.haomeiwen.com/subject/aphsqttx.html