新微信小游戏上线分享~及一些优化心得和踩到的坑

分享总结一些新手优化心得和碰到的坑:
版本:v2.0.10-alpha.4

1. 大量重复创建的节点一定要使用节点池
游戏初期开发完后,发现真机比较卡顿,当时比较偷懒,仅给子弹和敌机使用了节点池。后来发现敌人爆炸的时候,以及子弹撞击的时候(我们的爆炸和撞击特效是new 一个包含复合粒子的prefab ),会大量掉帧,后来给所有爆炸效果,以及子弹爆炸,等粒子特效节点也使用了组件池,性能得到了大幅度提升。

2. 微信小游戏中粒子数量不要太大,最好控制在100以内
感觉目前微信小游戏,粒子特效还是要省着点用,比如一些软件生成的默认粒子数,都需要注意下调整他们的粒子数量。不过一般降低粒子数量后,效果会差别很大,这时候可以增大粒子大小,来一定程度上的弥补视觉上的欠缺。

3. 微信小游戏音效卡顿优化
在微信小游戏里,频繁的 play 音效,会造成一定卡顿。比如当子弹撞击到敌人的时候,或者金币拾起的时候。
这个时候可以将短时间重复播放的音效合成一个,来循环播放,或者直接单音循环播放也可以起到优化的效果。在碰撞或者动画结束的时候,暂停(pause)音效播放即可,下次只要resume 就好。
总之就是避免频繁的 执行 play。

4. 小游戏里尽量不要直接使用scrollview
如果要用的话,一定要做优化,这一块我也偷懒了,仅使用了将超出显示的节点 opacity 设成0,来稍微降低些 drawcall。最好的方式应该是循环复用暂不显示的节点。个人觉得最简单的方式其实就是不要用scrollview,直接使用翻页的方式替代

5. 微信子域排行榜scrollview 无法滚动问题
这个问题当时也困扰了很久,这里面可能有两个坑:

  1. 子域里layout 是无法自动计算高度的,需要我们手动通过计算节点的高度,spacingY,top,bottom和在一起,计算出高度。

  2. 和 DPR 有关,当时发现模拟器上 iphone 6可以,但是iphone x 不可以,解决方法是修改
    子域文件夹下的libs 里面的 sub-context-adapter.js 这个文件

    cc.view.convertToLocationInView = function (tx, ty, relatedPos, out) {

    result.x = x / (this._devicePixelRatio / 2);
    result.y = y / (this._devicePixelRatio / 2);

     return result;
    

    }

大概总结了以上几点,之后有碰到再补充些。

3赞

希望大家可以多提些建议:pray:

建议降低血难度:joy:

mark 小游戏优化经验

mask

感觉你这个在微信打飞机小游戏里排的进前10了:+1:

粒子数量居然可以设置到100?我之前都不敢设这么多:joy:

mask

建议以后大家分享游戏 也附加上使用的creator版本。
如果有一些这个版本可以优化的方案我也能分享给你。

虽然是传统得打飞机得类型,但是比较有意思得这个是躲避直线弹道得。
问下楼主关于音效得优化,我也遇到了频繁播放play导致卡顿,我得解决方案时,当每次播放得时候,判断一下上一个音效得播放状态,如果没有播放完成,则跳过该次播放,保证同一个时刻只有1个音效在play,这样虽然能有效不降低性能,但是如果体验上并不是太好,比如子弹已经频率很高了,但是音效播放还是比骄慢,楼主有什么好得想法吗?

手感和消灭病毒比差那么些许,加油

mark

多谢你的支持!:grin:

嗯嗯,好的,这个是 v2.0.10-alpha.4

多谢你的鼓励,正在改进中:handshake:

Hello,关于音效优化可以试下这个方法:

将短时间重复播放的音效合成一个,来循环播放,或者直接单音循环播放也可以起到优化的效果。在动画结束的时候,暂停(pause)音效播放即可,下次只要resume 就好。

我用的就是这个方法,效果还是可以的,特别是针对需要快速反复播放的情况下。

mark 性能优化

消灭病毒:我不知道你在说什么:14:

1赞

希望大家给这个游戏多提些建议吧~谢谢大家:yum:

mark 性能优化