性能优化主要这几个方面进行优化:加载优化,渲染优化,内存优化,CPU优化及一些小技巧。

加载优化

图片资源处理:巧用九宫格拉伸来实现资源得复用,如大的纯色背景图,完全可以使用一张小图来进行拉伸获得;

使用图集:图集有3个好处,

  1.减少文件数量,提升加载速度

  2.减少体积

  3.减少DrawCall

压缩:包括图片,纹理,音频文件的压缩,打包成图集之后,需要进行压缩

Prefab加载优化:

  1.合理拆分预制体:

    1)实现最小单元资源复用

    2)预制体越大消耗时长呈指数上升

  2.开启延迟加载资源:勾选这个选项可以减少prefab的加载耗时,但首次显示的耗时会增加。

   因为由于勾选后,prefab所引用的资源,像图片、音效这些,不会在load时加载,而是会在prefab第一次显示的时候再进行资源的加载。因此需要根据具体的使用环境进行选择。

  3.选择优化策略:

    1)自动调整,creator根据加载方式自动调整优化策略,一般选择这个即可

    2)优化单次创建性能,加载时的耗时会减少很多,但实例化时的耗时会增加

    3)优化多次创建性能,实例化时的耗时将会大大减少,相应的,在load时的耗时会有所增加

场景加载优化:

  1.合理使用预置体构成场景,分批异步进行加载

  2.使用加载界面优化用户体验

  3.开启延迟加载资源

资源批量加载优化:使用分帧加载,第三方库async.eachLimit

裁剪引擎模块:这一步通常在游戏上线前,将不需要的模块删除,减少包体大小

渲染优化

渲染优化,主要针对drawcall的优化:

drawcall即CPU调用图形绘制接口的次数;

  1.使用图集,creator自带了自动合集功能,也可以使用其他第三方工具

  2.资源规划,尽量做到相同界面的资源放在相同得文件夹中,通用资源放在通用目录下,有以下好处

    1)方便打包成合集

    2)减少内存占用,方便使用内存

  3.减少使用系统字体,使用BMFont(2.09之后可以使用字体缓存),减少使用描边,mask,富文本

  4.调整渲染顺序:AABCB,这样顺序,改为AABBC顺序,渲染合批就不会被打断

内存优化

静态资源优化:使用场景的自动释放资源

动态资源优化:

  1.设置自动释放资源

    cc.loader.setAutoRelease         //设置自动释放资源

    cc.loader.setAutoReleaseRecursively    //设置该资源及其资源递归引用到的所有资源

    动态资源的释放需要用户自己设置,设置为自动释放资源之后,切换场景后,该动态资源会自动释放

  2.手动释放资源

    cc.loader.getDependsRecursively     //获取prefab所引用的所有资源

    cc.loader.release(this.prefab);      //释放资源

    一般这样使用:

    cc.loader.setAutoRelease(texture2d,false);  //设置为自动释放,保留这份资源不想释放

    let deps = cc.loader.getDependsRecursively('prefabs/sample');

    let index = deps.indexof(texture2d._uuid);

    if(index !== -1)

      deps.splice(index,1);

    cc.loader.release(deps);

  3.使用对象缓存池

CPU优化

cpu优化主要是对代码逻辑进行优化:

  1.数组的push可以改为arr[arr.lenght] = 0;

  2.for效率,可以参考我的这篇文章 https://www.cnblogs.com/kefeiGame/p/8391859.html

  3.不要使用try-catch or try-finally , eval ,arguments

  4.优化算法

杂项

使用谷歌浏览器的Performance定位CPU问题

使用谷歌浏览器的Memory定位内存问题

Creator性能优化的更多相关文章

  1. Cocos Creator 性能优化:DrawCall

    前言 在游戏开发中,DrawCall 作为一个非常重要的性能指标,直接影响游戏的整体性能表现. 无论是 Cocos Creator.Unity.Unreal 还是其他游戏引擎,只要说到游戏性能优化,D ...

  2. 数据库访问性能优化 Oracle

    特别说明: 1.  本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2.  本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...

  3. 用Netty开发中间件:高并发性能优化

    用Netty开发中间件:高并发性能优化 最近在写一个后台中间件的原型,主要是做消息的分发和透传.因为要用Java实现,所以网络通信框架的第一选择当然就是Netty了,使用的是Netty 4版本.Net ...

  4. Oracle数据库管理----性能优化

    https://blog.csdn.net/yzllz001/article/details/54848513 数据库访问优化法则   要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找 ...

  5. 用Netty开发中间件:高并发性能优化(转)

    用Netty开发中间件:高并发性能优化 最近在写一个后台中间件的原型,主要是做消息的分发和透传.因为要用Java实现,所以网络通信框架的第一选择当然就是Netty了,使用的是Netty 4版本.Net ...

  6. Oracle学习总结(8)—— 面向程序员的数据库访问性能优化法则

    特别说明: 1.  本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2.  本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...

  7. CocosCreator内存与性能优化

    一.内存优化 因为 iOS小游戏和微信共用同一个进程,而微信在连续两次收到系统内存警告的时候会关闭小游戏并释放小游戏占用的内存.如果你的小游戏有外网用户反馈“闪退”,或者你自己测试的时候频繁出现“该小 ...

  8. 以字节跳动内部 Data Catalog 架构升级为例聊业务系统的性能优化

    背景 字节跳动 Data Catalog 产品早期,是基于 LinkedIn Wherehows 进行二次改造,产品早期只支持 Hive 一种数据源.后续为了支持业务发展,做了很多修修补补的工作,系统 ...

  9. 01.SQLServer性能优化之----强大的文件组----分盘存储

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...

随机推荐

  1. 内网渗透之frp使用

    0x00 前言 nps相比上次已经介绍过了.但是他有一个致命缺点就是在scks5代理下会长连接一直不放开导致结果不准确.所以来讲讲frp的使用.frp虽然需要落地配置文件,但是扫描的结果还是很准确的. ...

  2. thinkphp5.0 field和with连用的问题

    field在with后面时field会不起作用,会查询数据库中全部的字段: field在with前面时会无法筛选联表的字段 解决办法把with换成join,field和join顺序无所谓 * @par ...

  3. 离线(不联网)安装gcc4.8.5

    1 楔子 原来机器gcc版本是4.4.6,不支持cpp11,很麻烦需要升级,但是机器不能连外网,只能离线安装,十分麻烦: 2 gcc4.8.5离线安装,通过rpm包: 资源链接: https://pa ...

  4. 【每日一包0015】gradient-string

    [github地址:https://github.com/ABCDdouyae...] gradient-string 用于在终端打印出好看的渐变文字 普通用法 console.log(gradien ...

  5. 纯前端导出Excel表格

    <html> <head> <p style="font-size: 20px;color: red;">使用a标签方式将json导出csv文件 ...

  6. ip端口协议,SSHj加密连接

    SSH协议----一旦linux服务器开机,SSH协议就不断的侦听22端口,一旦有连接到达,就校验连接用户名和密码: 可以理解为连接ip端口为找到一栋大楼,发送用户名和密码为向大楼保安出示证件.SSH ...

  7. Python之日期操作及转换详解

    # 导入datetime模块,用以操作时间 import datetime # 导入time模块 import time # 获取当前时间 格式: 年-月-日 时:分:秒 . 毫秒 nowTime = ...

  8. BZOJ 4003 / Luogu P3261 [JLOI2015]城池攻占 (左偏树)

    左偏树裸题,在树上合并儿子传上来的堆,然后小于当前结点防御值的就pop掉,pop的时候统计答案. 修改的话就像平衡树一样打懒标记就行了. 具体见代码 CODE #include<bits/std ...

  9. Python之signal模块的使用

    常用的信号值如下: 信号值 事件 处理方式 SIGHUP 终止进程 终端线路挂断 SIGINT 终止进程 中断进程 SIGQUIT "建立CORE文件终止进程,并且生成core文件" ...

  10. JavaScript复制内容到剪贴板

    移动端 需要复制内容到剪贴板时, clipborad.js 不支持ios微信版浏览器,可配合使用 execCommand 使其兼容, 完成一键复制淘口令的功能. 注意使用clipborad.js时,i ...