Creator性能优化
性能优化主要这几个方面进行优化:加载优化,渲染优化,内存优化,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性能优化的更多相关文章
- Cocos Creator 性能优化:DrawCall
		
前言 在游戏开发中,DrawCall 作为一个非常重要的性能指标,直接影响游戏的整体性能表现. 无论是 Cocos Creator.Unity.Unreal 还是其他游戏引擎,只要说到游戏性能优化,D ...
 - 数据库访问性能优化 Oracle
		
特别说明: 1. 本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2. 本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...
 - 用Netty开发中间件:高并发性能优化
		
用Netty开发中间件:高并发性能优化 最近在写一个后台中间件的原型,主要是做消息的分发和透传.因为要用Java实现,所以网络通信框架的第一选择当然就是Netty了,使用的是Netty 4版本.Net ...
 - Oracle数据库管理----性能优化
		
https://blog.csdn.net/yzllz001/article/details/54848513 数据库访问优化法则 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找 ...
 - 用Netty开发中间件:高并发性能优化(转)
		
用Netty开发中间件:高并发性能优化 最近在写一个后台中间件的原型,主要是做消息的分发和透传.因为要用Java实现,所以网络通信框架的第一选择当然就是Netty了,使用的是Netty 4版本.Net ...
 - Oracle学习总结(8)—— 面向程序员的数据库访问性能优化法则
		
特别说明: 1. 本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2. 本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...
 - CocosCreator内存与性能优化
		
一.内存优化 因为 iOS小游戏和微信共用同一个进程,而微信在连续两次收到系统内存警告的时候会关闭小游戏并释放小游戏占用的内存.如果你的小游戏有外网用户反馈“闪退”,或者你自己测试的时候频繁出现“该小 ...
 - 以字节跳动内部 Data Catalog 架构升级为例聊业务系统的性能优化
		
背景 字节跳动 Data Catalog 产品早期,是基于 LinkedIn Wherehows 进行二次改造,产品早期只支持 Hive 一种数据源.后续为了支持业务发展,做了很多修修补补的工作,系统 ...
 - 01.SQLServer性能优化之----强大的文件组----分盘存储
		
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
 
随机推荐
- Java编程思想第四版完整中文高清版.pdf
			
Java编程思想第四版完整中文高清版.pdf 链接: https://pan.baidu.com/s/1vV5BHF3L-bnaG6WGurdJ_A 提取码: vigy 复制这段内容后打开百度网盘手机 ...
 - IPC之syscall.c源码解读
			
// SPDX-License-Identifier: GPL-2.0 /* * sys_ipc() is the old de-multiplexer for the SysV IPC calls. ...
 - 执行sudo pip3 ...报错 Traceback (most recent call last):   File "/usr/bin/pip3", line 9, in <module>     from pip import main ImportError: cannot import name 'main'
			
对于普通pip,把pip3改成pip即可,其他的修改一样 1.执行命令 sudo gedit /usr/bin/pip3 2.改成下面的形式 from pip import __main__ # 需要 ...
 - Linq表达树(固定参数)
			
这篇博客只能用来批判因为我刚刚学习linq对它了解只有简单的linq to sql 的语句所以来写这个博客只能说是班门弄斧了,看的下去的话就坚持看吧. 在网上看了别人的文章目前水平有限借鉴别人的思想吧 ...
 - java线程基础巩固---数据同步引入并结合jconsole,jstack以及汇编指令认识synchronized关键字
			
对于多线程编程而言其实老生成谈的就是数据同步问题,接下来就会开始接触这块的东东,比较麻烦,但是也是非常重要,所以按部就班的一点点去专研它,下面开始. 数据同步引入: 这里用之前写过的银行叫号的功能做为 ...
 - Hdu 1517 巴什博奕变形
			
易知2-9为先手胜 继续递推下去 10-18 后手胜 再推发现19-162先手胜 即发现有9(9) 18(2*9) 162(9*2*9)..... #include<bits/stdc++.h& ...
 - PAT乙级1025
			
题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805296180871168 题解 第一遍没有全部AC,最后1个 ...
 - UVa540 Team Queue(队列queue)
			
队列 STL队列定义在头文件<queue>中, 用“ queue<int>s ” 方式定义, 用push()和pop()进行元素的入队和出队操作, front()取队首元素(但 ...
 - win10 sql server2012 连接navicat 无法使用
			
修改 连接navicat时报如下错误,按照网上办法,各种删除navicat的客户端,行不通. 点击sqlserver管理器,提示评估期已过.有关如何升级的测试版软件的信息,请访问http://www. ...
 - JAVA bean为何要实现序列化
			
简而言之:序列化,就是为了在不同时间或不同平台的JVM之间共享实例对象.即序列化出于两个原因:①.用于持久化到磁盘上:②.用于作为数据流在网络上传输. 所谓的Serializable,就是java提供 ...