游戏优化

一、cocos2dx游戏内存优化

在游戏里面,游戏的内存占用绝大部分是纹理,所以我们要优化的对象主要是纹理方面。
  (1)分帧加载纹理或者item,优化图集,打包碎图到大图。
  什么是分帧加载?

    分帧加载就是加载下一个纹理的时候至少相隔一个帧的时间,不能同一帧时间里面加载多个纹理,如果一次加载太多东西,会导致页面卡顿现象。

    分帧加载主要用在页面加载另一个场景资源的时候,和像背包那种srcollview 很多物品的时候。
 (2)使用对象池,如果使用大量相同精灵纹理。
 (3) 按照最大到最小的顺序的加载纹理,可以减少内存瞬间的峰值。

  创建精灵CCSprite的过程中会创建一个CCImage,所以短时间会占用2倍内存,所以应避免连续加载(同一帧内,加载多张图片)。
(4)避开内存使用高峰
(5)当不需要的时候释放无用的资源

clear_Audio(url) {
        let count = 0;
        for (let t in this.questionData) {
            let element = this.questionData[t];
            if (element.audio_url == url) {
                count++;
            }
        }
        if (count) return;
        cc.assetManager.releaseAsset(this.gameAudioClips[url]);
        delete this.gameAudioClips[url];
    }

(6)减少声音文件大小
(7)使用Loading层作为缓冲,清除前面没用的缓存了的场景,再加载新的场景。
(8)使用骨骼动画代替序列帧动画

(9)避免使用超大纹理集,尽量使用 1024 *1024 NPOT pvr .ccz 

  (10)请使用RGB4444颜色深度16位纹理

 

 

 

二、creator 游戏内存优化,主要从这几个方面去优化:加载优化、渲染优化、内存优化、CPU占用以及性能优化

1、图集打包
(1)省去了多次打开/关闭文件所带来的时间损耗,减少图片读取和解码操作。
(2)减少文件的体积
(3)多张图片合并到一起,在包体上面会有一定的优化,减少DrawCall
2、优化资源释放,场景切换,用不到的资源释放掉。
3、Prefab加载优化
Prefab这块的加载优化主要集中在两个地方:一个是load加载耗时优化,另一个是实例化耗时优化。
超大的prefab可以考虑拆分不同的基本功能来实现
4、资源批量加载优化,也就是分帧加载
如果需要大量生成节点或者prefab的时候,我们要考虑分帧加载,不能一次性的同一时间加载
5、游戏中频繁更新的文字,推荐使用BMFont,系统字体会比较消耗性能。
6、渲染顺序调整,属于同一合集的纹理节点尽量一起渲染,中间尽量不要参杂其他纹理
7、优化节点树,减少节点数量
8、场景中不要挂载过多的Prefab,可适当将一些Prefab变成动态加载的
9、减少声音文件大小
10、使用骨骼动画代替序列帧动画

 

 


三、包体优化

  1)代码体积

    功能剔除:3D和tileMap模块,逻辑代码优化,以及setting.js优化,这个setting是根据resources中的文件的多少来决定的,所以要释放resources,文件尽量少。

  2)图像资源

    背景图,使用jpg,要压缩,色深,已经分辨率的修改。

    尽量使用九宫格图片替换一张大图

    碎图打包成图集,使用TexturePackerGUI

    图片越少越好,帧动画,改成龙骨动画

  3)音乐资源

    压缩格式:WAV ---》体积 MP3,ogg

    声道:双声道数据,体积就是2倍

    采样率:1秒 ---》压缩软件来做

    背景音乐:尽可能的去优化

  4)字库

    特效文字,尽量使用位图字体,几个字母 + 图片,体积远远小于一个完整的字库,如数字,界面文字,bmpfont ---->.png + .fnt 文件;

    尽可能使用系统字库

    fontmin 可以压缩字库,把不用的文字,从字库移除,减少体积

    位图字与矢量字

 

 

 

posted @ 2022-08-25 11:38  jiaxin2015  阅读(0)  评论(0)    收藏  举报