之前在给策划童鞋写一个小脚本,为了让他们使用时能很快了解用法,自定义了编辑器,重写了一下脚本的inspector面板布局和显示逻辑。
但发现一个问题,就是一旦自定义了Editor,Gizmo的绘图包含通过编辑器赋值的参数就不能使用了。也就是说,假如我想Gizmos.DrawLine(from * param, to * param);其中 param 为编辑器赋值参数,这时Gizmo会一直使用默认值。
我想这也很好理解,扩展的东西Gizmo当然是不知道的。于是google了一下,几经波折(主要是没发现和我的问题一样的,但发现了自己Handle Gizmo的方法)。
最终解决版本如下:
1 [DrawGizmo(GizmoType.Selected | GizmoType.SelectedOrChild)] 2 private static void HandleMyGizmo(Transform aTransform, GizmoType aType){ 3 // 这时,你想干什么都可以了! 4 // 可以获取其他编辑器赋值好的序列化属性用于Gizmos 5 // 但需要注意 这个方式是全局的 需要检测一下你特定的脚本 6 }
效果还不错,只是需要选中物体才会显示,当然有童鞋也可以添加GizmoType.NotSelected 实现和Gizmos一样的效果
时间: 2024-10-07 04:07:34