求助creator 大量节点更新位置的情况下会降帧严重啊,有没有解决方案

同款游戏,我的降到20大概可以到5000多节点。浏览器更好一些

试过了,将计算全部去掉,只是普通的加法后,然后更新位置,也会掉帧,和对象数量有关,少于那个数量级以前就一切没问题

不行啊,按你说的试过了,计算啥的全去掉了,只是每个节点的位置每帧移动0.5个像素位置,这样更新也只有20不到帧数(节点5000个,每个节点每帧只做一次位置更新)

我也在做这个东西,确实是有雷这里,数量多起来就是炸。待我摸摸这里雷究竟为何。
解谜游戏:扫creator团队布下的雷

3赞

setPosition和直接修改x, y属性,底层不一样吗

@Leo1987 你的问题有解决么?

没有解决,creator做这种需要大量动态计算坐标的游戏效率还是不如cocos2dx

换回2dx重做了一遍,3000个节点还没发现问题,在creator下500个节点的同时计算和更新,在真机上就已经降帧到惨不忍睹的地步

这个主要还是在脚本层与 native 层的频繁通信造成的,就是 setPosition 这个 API 每帧大量调用开销就很大。

建议像这种大量的position 修改可以使用 action,或者自已用 c++写好,js 层只是发起调用,这样可以大幅度提高性能。

2赞

但是现在creator的C++支持还没做好吧,正在等待creator C++版本。

恩,riq 大神正在做

换成了action,效果一样差 …

我不明白你为什么要去移动蛇身体的节点!只需要要移动头部就行啦!

我只能呵呵呵两声了,前面我已经回答过和你一样说的问题了,因为蛇身节点纹理不一样,只移动头,蛇身的纹理就得一直换,更耗性能(其他节点都是跟着蛇头更新坐标的)

不知道用 Cocos2d-JS 做会不会好点 ? 用creator目前看来做不成

算了!每个人思路不一样,想法也不一样!

##moveto的本质也是在update中setposition,我想用moveto并不能解决性能的问题。相反,自己控制setposition,也要灵活好多。

###有个比较简单的优化策略,这边的蛇是由若干节点拼接而成的,在移动过程中可以只处理后面的节点,某一个节点的位置下一帧仍然有节点的情况就可以不用修改位置;只需要把后面的节点填充有位置改变的节点位置即可。这样应该可以减少需要修改位置节点的数量。

###像这样
####移动方------------------>
CBBBBBBBBBBBBBBBBBBA
_BBBBBBBBBBBBBBBBBBCA
####这个过程只调整了A和C的位置

很简单,大量节点目前Creator是不太支持的,就算放在原来的cocos2dx C++,上千个节点也是承受不了的。

还好,用cocos2dx 3.12已经解决卡顿问题