[特性需求] 场景编辑器相关的扩展 API

需求

支持场景编辑器相关的扩展 API (或消息事件),包括:

  1. 场景编辑器内的点击
  2. 场景编辑器内的鼠标移动
  3. 场景编辑器内的滚轮缩放
  4. 阻止场景编辑器内鼠标的默认行为
  5. 支持非 MeshRenderer Node 的射线检测点选,支持自定义点选包围盒

目的

扩展场景编辑器,实现更丰富的所见即所得编辑功能,包括自定义 GIZMO,隐藏子节点并自定义选择包围盒,优化可见的场景层级等。

例如,我们希望策划和美术,可以直接在 Cocos 编辑器中拖拉拽摆放场景。但希望提供给它们的 Prefab 是简单的,看不到子级的。于是我们可以通过 @executeInEditor 写个外层组件,把子节点都 HideInHierachyLockedInEditor。但是这会导致在场景编辑器中,无法所见即所得的选中 Node。

本想通过编辑器 API 来扩展,但是发现无论是监听 Input 事件还是什么方式都不行,原因是在编辑器集中,游戏的 browser 上方被 engine-view 覆盖,而 engine-view 尚未提供扩展 API 和消息,于是无法监听场景编辑器中的鼠标事件。

目前的临时解决方案只能在外层挂一个 MeshRenderer,然后加一个程序生成的 Cube 来实现包围盒和点选,如下图:

策划拖拉拽刚需,现有的条件先凑合实现一个,有需要的盆友可自取:
https://github.com/k8w/cocos-custom-gizmo-example

效果预览

  1. Prefab:(包含多个子节点和自定义 GIZMO)

image

  1. 场景编辑:(看不见 Prefab 细节,防止误修改)

image

  1. 构建和实际运行:(剔除自定义 GIZMO)

image

1赞

66666 屌屌屌

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

牛皮 Plus!