刚体碰撞回调中删除Tiledmap的User Node的bug

  • Creator 版本:2.2.2

  • 详细报错信息,包含调用堆栈:

  • 重现方式:
    用户节点下挂刚体组件,在刚体的碰撞回调中将用户节点从TiledLayer上删除


分析:
节点作为User Node加入TiledLayer时,增加了cc.TiledUserNodeData组件,在调用cc.TiledLayer.removeUserNode时会将该组件从节点上删除。
回调时,物理系统会在刚体组件所在节点上迭代寻找同名回调方法,而迭代次数是会包含了待删除cc.TiledUserNodeData组件的,当删除了该组件之后,判断该组件是否有同名方法就会出现这个bug了:


建议判断是否有同名回调方法时,先判断组件是否存在。