解决在自定义编辑器下,无法用Inspector面板的赋值作为参数显示Gizmos的问题

之前在给策划童鞋写一个小脚本,为了让他们使用时能很快了解用法,自定义了编辑器,重写了一下脚本的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一样的效果
posted @ 2015-03-15 11:41  黑金甲虫  阅读(593)  评论(0)    收藏  举报