cocos creator 性能优化系列随笔

一 预制体 加载优化 

资源批量加载优化

for (let i = 0; i < itemNum; i++) {

let item = cc.instantiate(prefab);

...

}

连续实例化N个对象。但在大量UI、动画同时出现时,却极有可能引起卡顿,因为实例化对象是个非常耗CPU的阻塞操作。

当布置好一个场景并在游戏中显示,或者使用预制体调用 cc.instantiate 实例化出节点时,我们可能有一些同样的疑问:

  • 引擎是怎么样实例化的?
  • ”优化多次创建“ 和 ”优化单次创建“ 的优化策略有什么不同?
  • 在编辑器拖节点是不是要比 getChild 更好?
  • 怎么样做,实例化时性能会更好?
  • 常用的列表 是否使用缓存池 复用节点 减少实例化操作

以后再讨论

 

优化方法就是采用分帧执行,例如分成10帧来执行,即每一帧只实例化一个对象。使用JavaScriptsetInterval函数实现如下:

let count = 10;
let timer = setInterval(() => {
    if (count-- > 0) {
        let node = cc.instantiate(prefab);
        ...
    } else {
        clearInterval(timer);
    } 
}, 0);

如果this指针是个组件对象,也可以使用Creator封装的schedule系列函数来实现:

let count = 10; this.schedule(() => { let node = cc.instantiate(prefab); ... }, 0, count-1, 0);

Cocos Creator中,有一些常见的性能优化方法可以帮助提高游戏的性能: 1. 减少渲染批次:合并相邻节点的渲染批次可以减少绘制调用。可以使用Cocos Creator提供的节点分组功能或者合并节点来减少渲染批次。 2. 使用图集:将游戏中的小图标合并到图集中可以减少纹理切换和内存开销。 3. 控制粒子系统的数量:粒子系统在游戏中可以带来很好的效果,但是过多的粒子会导致性能下降。可以通过控制粒子的数量、生命周期和发射频率来优化性能。 4. 使用连接池:对于频繁创建和销毁的对象,可以使用连接池来重用对象,减少内存分配和垃圾回收的开销。 5. 资源压缩和优化:对游戏中的资源进行压缩和优化,包括图片、音频和视频等。可以使用工具对资源进行压缩,并使用合适的压缩格式和加载策略来提高加载速度和减少内存占用。 6. 避免过多的Update回调:在游戏中,Update回调每帧都会执行,如果有过多的Update回调,会导致性能下降。可以合理使用Update回调,避免不必要的计算和更新。 7. 禁用不需要的物理碰撞检测:如果游戏中不需要物理碰撞检测,可以禁用物理引擎或者禁用不需要进行碰撞检测的节点。 8. 使用合适的碰撞体形状:对于物体的碰撞体,选择合适的形状可以减少碰撞检测的计算量。可以根据物体的形状和特性选择合适的碰撞体形状,比如使用简单的矩形形状代替复杂的多边形形状。 9. 合理使用批量渲染:Cocos Creator提供了批量渲染功能,可以将相邻的节点合并为一个批次进行渲染,减少绘制调用。可以合理使用批量渲染功能来优化性能。 10. 使用性能分析工具:Cocos Creator提供了性能分析工具,可以帮助开发者分析游戏的性能瓶颈,并进行相应的优化。可以使用性能分析工具来定位和解决性能问题。 以上是一些常见的Cocos Creator性能优化方法,根据具体的游戏需求和场景,还可以进行其他针对性的优化。在进行性能优化时,建议先进行性能测试和分析,找出性能瓶颈,并有针对性地进行优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mrwql

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值