需求
支持场景编辑器相关的扩展 API (或消息事件),包括:
- 场景编辑器内的点击
- 场景编辑器内的鼠标移动
- 场景编辑器内的滚轮缩放
- 阻止场景编辑器内鼠标的默认行为
- 支持非 MeshRenderer Node 的射线检测点选,支持自定义点选包围盒
目的
扩展场景编辑器,实现更丰富的所见即所得编辑功能,包括自定义 GIZMO,隐藏子节点并自定义选择包围盒,优化可见的场景层级等。
例如,我们希望策划和美术,可以直接在 Cocos 编辑器中拖拉拽摆放场景。但希望提供给它们的 Prefab 是简单的,看不到子级的。于是我们可以通过 @executeInEditor 写个外层组件,把子节点都 HideInHierachy 和 LockedInEditor。但是这会导致在场景编辑器中,无法所见即所得的选中 Node。
本想通过编辑器 API 来扩展,但是发现无论是监听 Input 事件还是什么方式都不行,原因是在编辑器集中,游戏的 browser 上方被 engine-view 覆盖,而 engine-view 尚未提供扩展 API 和消息,于是无法监听场景编辑器中的鼠标事件。
目前的临时解决方案只能在外层挂一个 MeshRenderer,然后加一个程序生成的 Cube 来实现包围盒和点选,如下图:




给K8W大佬点赞,个个精品,道道匠心!