节点上同时挂载BoxCollider和CylinderCollider
BoxCollider组件关闭
CylinderCollider 组件打开
会产生无法接收onCollisionEnter事件
检查下注册对象是不是BoxCollider ,另外,可以麻烦给个稳定复现的Demo吗
注册对象改为CylinderColliderComponent
也会出现这个问题
这个 demo 就是注册在 box collider 上的,因为没有启用,接受不到事件是正常的
试试下面的代码,我这边是正常的
onLoad() {
this.collider = this.getComponent(CylinderColliderComponent);
this.collider.on('onCollisionEnter', this.onCollisionEnter, this);
}
试了你的代码是正常的
不懂为啥还要getComponent
用拖拉的方式this.collider不是已经得到Component了嘛
拖拉节点,当有多个满足类型的组件时,会设置成第一个组件
原来会设成第一个组件
明白了
你可以贴一下截图,看一下是什么报错?
脚本组件的顺序要在collider组件前面才行,不然collider组件会优先destruct,属性方法都置空了。
或者考虑在onEnable,onDisable的时候注册和取消事件。
感觉现在是有点问题的,不应该这样就报错,或者在文档中应该有事件取消的实践规范。

