因为做的游戏内容里面需要渲染大量节点对象,如果修改node的position,就会严重降帧(大概同时计算修改几千个节点)。
这个是节点数超过2000的时候的,这个是700多个节点的时候,是不是有渲染数量的限制啊,超过多少就会效率下降
因为做的游戏内容里面需要渲染大量节点对象,如果修改node的position,就会严重降帧(大概同时计算修改几千个节点)。
这个是节点数超过2000的时候的,模拟器怎么显示出 调试信息啊
cc.director.setDisplayStats(true);
用浏览器 profiles 分析下????
不止是在浏览器中啊(浏览器中好一些,发现超过3000以上才掉的厉害,可能跟机器性能有问题),但是在模拟器和真机中测试过了都是不能同时更新太多节点坐标,只要节点个数上去就一定降下来,cocos2dx以前都是在批次渲染的情况下都是在超过1W多个渲染节点后才会出现这种情况的,现在creator的性能又这么差吗,2000不到就降成这样。。。
频繁的setpos我估计是卡在CPU~~~~
还有,贪吃蛇大战蛇的移动不是这样子做的…
绝对不是全部图片一起移动的。还有要移动也绝对不会是不断的setposition来移动,那样会很吃CPU运算,用node.runAction(moveto)来处理移动的表现才是上佳之选。
贪吃蛇,只需要移动头,然后run一个永久的Action,这个action不停的好像拉屎下蛋那样在尾巴留下一个屎或者蛋,然后这些下的蛋和屎会绑定一下碰撞,就能实现这个贪吃蛇大作战了~~~~
就是后面的尾巴moveTo到头吗?
no…
贪吃蛇的移动,只需要移动头,其他都是不断的从尾巴那里生成出来然后过段时间销毁。
这和平时网游的幻影轨迹的实现是同一个道理的,也和我们那些粒子效果看到的轨迹一样,移动不停发射的粒子就能看到粒子的一条长长的轨迹。同理,你只需要做一个这样子的发射器,移动这个发射器,控制一下销毁时间,就能看到一条长长的轨迹。
其实吧,你只需要每次创建一个头和销毁尾巴一个,吃一个就在尾巴加一个,不要问我为啥,自己想
你说的这种方式我最初是试过的,但是效果不好,移动轨迹的效果太软,太生硬,不过还是谢谢了
setPostion并不是为了移动,而是为了准确的计算每段的位置,移动还是靠蛇头带动的,身子是没有速度的
你这样的方法不行,我最开始是这样做的,但是因为每个部分的距离是固定的(美术出图决定的),那就必然导致要保持间距的话,蛇头的移动速度就必须和这个间距相等,如果不等的话,蛇就会变形
不过根据你的说法,我想到另一个办法,可以试一下,3q
要是自己通过update 操作位置,你可以这样试试,假如有3000个sprite, 每次update刷新300个,分10次刷新完
这样会有问题哦,这个的话,总的帧数是不会下降了,但是在表现上你会发现每组的移动变化会变得一顿一顿的(变相的每组的帧数会表现成实际帧数的1/n)
失败了,按照刚刚的想法试了下,setPostion次数少了很多,但是因为蛇有皮肤的,这样的话,就得要动态去修改每段的纹理,这样消耗的性能更高,尝试失败,继续寻找解决方案。
这种效果:

像这个特效你猜他是怎么做的,就是不停的生成一个本尊图片然后在那个时段贴在那个位置然后这张图片会自己渐隐消失。
这样子会看起来很酷炫又基本不会有CPU的运算。
如果要是还操作后面的那些残影,那肯定会占用很多CPU的运算,多起来PC电脑都扛不住。
说到重点了,你有在准确计算每段位置。于是你基本会不停大量的计算着,这才是卡的原因吧,这些大量的计算你用什么方法看看是不是耗时非常长,把这些耗时长的运算优化一下就会好很多了。
模拟器上可以改用 setPosition(x, y) 来刷新位置 并且保证每个节点每帧只调用这个接口一次
试了下 掉帧很厉害