creator 2.2.0 碰撞引擎的一个效率问题

以下是2.0.9的gruop代码

以下是2.2.0的group代码

可以看到EventType.GROUP_CHANGED的事件的emit由只在该节点广播变成了遍历该节点所有的子节点广播。

而在CollisionManager里有这样一个监听

但是测试发现有个问题,就是节点的gruop实际上没有改变时,也会触发该事件,导致白白做了一次removeCollider和addCollider;,在有大量碰撞的游戏中,会导致碰撞处理时涉及父节点改变的情况变得异常卡顿,比如飞刀玩得贼6等io类型。
最后的处理是:

在这里加一个判断,如果group和上次没有区别则不进行剩下的操作。实测没有问题,也消除了卡顿。
引擎组是否看下需要优化一下此处的逻辑。

5赞

顶一顶

这类问题必须要顶上去

先顶一下,今天来试试2.2.0版本

emit位置调整,导致递归的时候所有孩子节点都触发了GROUP_CHANGED,是这个意思么?

官方大大们好像不care这个问题啊

你好,感谢反馈,已修复,另外2.2.0的问题,最好去2.2.0发布贴反馈,我们会发现更及时,谢谢。
https://github.com/cocos-creator/engine/pull/5485
https://github.com/cocos-creator-packages/jsb-adapter/pull/173

1赞