性能优化主要这几个方面进行优化:加载优化,渲染优化,内存优化,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. 第九章、import 和from ...import

    目录 第九章.import 和from ...import 一.import和 from ...import ... 二.import模块名 第九章.import 和from ...import 一. ...

  2. 2、screen工具

    1.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...

  3. deep_learning_Function_tensorboard的使用

    数据可视化(网页能打开,但是没有数据):https://jingyan.baidu.com/article/e9fb46e1c55ac93520f7666b.html

  4. deep_learning_Function_tf.argmax()解析

    tf.argmax(input,axis)根据axis取值的不同返回每行或者每列最大值的索引. 这个很好理解,只是tf.argmax()的参数让人有些迷惑,比如,tf.argmax(array, 1) ...

  5. 异步消息处理机制相关面试问题-intentservice面试问题详解

    IntentService是什么? IntentService是继承并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService方法和启动传统的S ...

  6. curses is not supported on this machine:(curses 在pycharm(Windows)中的安装 )

    curse在Windows下的pycharm中安装,curse是不能直接在Windows下跑的.需要安装相关环境,要根据直接project的编译器版本来选择下载相关的whl. 找到project的Sc ...

  7. jvm——Java main方法的执行

    这是什么神仙博客! https://www.cnblogs.com/kaleidoscope/p/9629156.html

  8. 在java下面配置xml导致idea编译失败

    1.今天遇到一个问题在java配置dao.xml的时候导致,idea编译失败 然后把pom.xml上面的 <build> <resources> <resource> ...

  9. js拖拽文件夹上传

    由于项目需要上传文件到服务器,于是便在文件上传的基础上增加了拖拽上传.拖拽上传当然属于文件上传的一部分,只不过在文件上传的基础上增加了拖拽的界面,主要在于前台的交互, 从拖拽的文件中获取文件列表然后调 ...

  10. 移动端布局Rem

    一.最好用没有之一 http://www.jianshu.com/p/b00cd3506782 虽然博主说这个方案已经过期了 但是新方案还没有理解 就接着沿用这个 可以根据自己常用的设计稿的宽度修改 ...