客户端优化经验

从项目中积累了一些客户端性能优化经验
     1.目前项目的在手机上跑,内存占用最大的是UI。在profile下看,一张2048的大图集占用的内存比一张1024的图集占用的内存要多出一倍,大概8M。所以优化方案是拆分图集,把大图集按功能分割成若干小图集(做成1024*1024),把单独的大图独自拉出来用UITexture异步加载。可以使内存大大优化。
    2.目前项目的内存均值其实不高,但是峰值比较高。原因是没有重用内存实例化的gameObject,当特效或者角色的gameObject的逻辑实体destroy时,把gameObject也一并Destroy,创建销毁这一过程导致内存峰值增大。优化方案是在Destroy特效或者角色的GameObject时把GameObject缓存起来,减少创建销毁次数。当需要用相同的特效或者角色时直接在缓存池中取GameObject。在跨场景时把缓存池里的GameObejct Destroy掉。
    3.目前的UI 公用图集修改时,所有依赖用到此公有图集的UI打包时都和原来的不同(即时没有修改)。这样,我们做热更版本时,如果要修改公有图集,那么所有UI打包时都和之前的不一样,从而使打出来的热更包很大。原因是打包android UI创建的etc图集时,生成材质和两张etc图(一张透明图,一张不透明图),材质是每次都是直接new出来,没有用上次已有的材质。所以打出来的UI都和上次都不同。解决方案是,重用之前已经打出来的etc材质,这样修改公有图集时,不会把所有UI都重打,从而热更包的体积大大减少。
    4.不透明图片不要用png,用jpg体积会小一点。

你可能感兴趣的:(unity3d)