内存优化

内存优化

(1)纹理优化
有三个因素影响了纹理的内存使用。纹理格式(压缩的还是非压缩的),颜色,大小。
我们可以使用PVR格式的纹理来减少内存使用。最被建议的纹理格式是pvr.ccz,每色的bit值越高,画面质量就约好。但是也会消费很多内存。
那么我们使用颜色深度是RGBA4444的纹理来代替RBGA8888,这将会消费一半内存。
我们也会发现大纹理也会导致内存相关的问题。那么你最好使用适度的大小。
(2)声音优化
有三个因素影响文件内存使用。是音频文件格式,比特率,和样本率
我们最希望音频文件时mp3格式。因为它被android和ios都支持。并且它也被压缩并且硬件加速了。
你应该保证你的背景音乐文件大小在800KB一下。最简单的方式就是减少背景音乐播放时间并且重复调用。
你应该保持你的音频文件样本率在96-128kbps之间,并且比特率在44kHz就足够了。
(3)字体和粒子系统优化
当使用BM字体显示游戏分数,在你的图片文件中选择最小的数字字符,例如:
如果你想只显示数字,你可以移除所有的字符。
粒子系统中,我们可以减少粒子数量来减少内存使用。
一、静态资源的内存管理
静态资源指的是场景中直接或间接引用到的所有资源(脚本动态加载的资源不算在内)
在场景资源的属性编辑器中可以勾选“自动释放资源”选项,从而在切换场景时,会自动将旧场景使用的静态资源释放掉,从而节省内存的占用
在这里插入图片描述
二、动态资源的内存管理
将所有节点资源放一个场景,节点资源全在一个场景代码逻辑控制。效果:安卓 中等手机打开会明显黑屏。原因:打开场景的时候,是一个加载资源到内存的过程,这个过程需要耗费时间,造成一个产品最不喜欢的黑屏。ios手机嫌弃内存过大。
优化:将首次打开场景暂时未用到的资源放在打开场景之后加载,cc.loader.loadRes,这样可以节约首次打开场景的时间。类似于很多游戏打开后是一个读条的场景。或者在某个时间段悄悄加载,这样就避免用户等待时间。

动态资源的加载:动态资源统一使用cc.loader进行资源的加载以及管理。
在这里插入图片描述
不过Cocos Creator中通过cc.loader去加载资源的所有方法,都是异步的,所以需要在回调中,确认加载完成后才能使用资源。也可以通过cc.loader.getRes去同步的获取资源,但需要对get到的资源进行检查,如果没有加载或者没有加载完成,则需要等待或者通过cc.loader进行加载。
在这里插入图片描述
动态资源的释放:动态资源的释放同样时通过cc.loader去管理的。
有两种释放资源的管理方式:
(1)自动释放资源
在这里插入图片描述
(2)手动释放资源
在这里插入图片描述
这里常用的时cc.loader.release
不推荐使用cc.loader.releaseAll,因为cc.loader.releaseAll会将所有通过cc.loader加载进来的动态资源全部释放掉,而在我们正常的项目开发过程中,基本上很少有场景没有使用到动态资源的情况,所以这种释放通常会带来程序的崩溃,因此使用上不推荐,最好不要使用。
在这里插入图片描述
三、建议和技巧
1、一帧帧的加载游戏资源。
2、减少绘制调用。使用CCSpriteBatchNode
3、按照最大到最小的顺序的加载纹理
4、避开内存使用高峰、
5、使用加载界面来预加载游戏资源。
6、当不需要的时候释放无用的资源
7、当有内存警告的时候释放缓存的资源
8、使用texturePacker来优化纹理尺寸,格式,色彩深度值等等。
9、小心使用JPG文件
10、使用16位RBGA4444色彩深度的纹理
11、使用NPOT纹理代替POT纹理
12、避开加载大尺寸图片
13、使用1024*1024 NPOT pvr.ccz纹理图集而不是原生图片
参考连接:链接1
链接2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值