合理的分配图集

合理的分配图集可以降低drawcall和资源加载速度;具体细节如下:

1.同一个UI界面的图片尽可能放到一个图集中,这样可以尽可能的降低

2.共用的图片放到一个或几共享的图集中,例如通用的弹框和按钮等;相同功能的图片放到一个图集中。

3.不同格式的图片分别放到不同的图集中,例如透明(带Alpha)和不透明(不带Alpha)的图片,这样可以减少图片的存储空间和占用内存。

降低渲染批次

1.合理分配图集 2.Label尽量使用 BMFront 字体 3.不要使用一张图通过修改节点的颜色而达到不同的结果。

避免通过场景来加载资源。

这个很简单如果通过场景加载资源,可能你会方便,但是加载这个场景所需要的时间就会增加。给用户的体验效果就很差。例如市场上开源的 达达麻将,麒麟麻将都是通过界面来加载界面的,这个方式会造成场景加载速度慢。

功能UI资源不要与其他功能UI资源混用,尽量做到资源模块化管理。

资源管理模块化。这样处理加载和管理资源非常便利。 例如:一个图集中有一张和多张正在使用的资源,而有一部分没有使用的资源。那么肯定不能释放这个资源。如果释放那么纹理就会丢失。

适当的降低图片的尺寸

有时UI系统的背景可能会使用全屏大小的图片,比如在Iphone上使用1136*640大小的图片;使用这样尺寸的图片代价是很昂贵的,可以和美术同学商量适当的降低图片的精度,使用更低尺寸的图片。 例如:游戏里面的座子可以采用一半的资源。

在android设备上使用etc格式的图片

目前,几乎所有android设备都支持etc1格式的图片,etc1的好处是第个像素点只战用0.5个字节而普通rgba32的图片每个像素点占4个字节,也就说一张1024*1024图片如果使用rgba32的格式所占用的内存为4M而etc1格式所占用的内存仅为0.5M。但是使用etc1格式的图片有两个限制——长和宽必须是POT的(2的N次方)并且不支持alpha通道,因此使用etc1时需要额外的一张图来存储alpha通道,并且使用特殊的shader来对alpha采样。

删除不必要的UI节点、动画组件及资源

随着项目的迭代,可能有部分ui节点及动画已经失效,对于失效的节点及动画一定要删除,在很多项目中,有部分同学为了方便省事,只是将失效的节点及动画disable了。这样做虽然在运行时不会对cpu造成太多负担,但是在加载时会增加不必要的加载时间以及内存占用。

resources目录中应该只保存prefab文件 和 动态使用的纹理等,其它非prefab文件(例如不需要动态使用的动画,纹理,粒子等)应放到resource目录之外.

这样打出来的包有几个文件(setting.jsc, project.jsc, jsb_polyfill.jsc)比较小一些。那么第一个场景启动会快一些。对资源的处理个人觉得应该模块化。