Unity3D研究院编辑器之不影响原有布局拓展Inspector

今天无意间发现了一篇好文章,也让我解决了一个很久都没解决的难题。问题是这样的,假如我想去拓展Unity自带的inspector但是并不想影响原有布局。 比如下面这段代码:

我的本意是想在Rect Transform面板的下面去添加一个按钮,可是我一旦调用base.OnInspectorGUI()方法以后,原有的布局都就变了。

Unity3D研究院编辑器之不影响原有布局拓展Inspector(二十四) - 雨松MOMO程序研究院 - 1

 

为什么会影响到原有布局呢?原因是这样的上面的代码是继承Editor的,那么base.OnInspectorGUI()实际上去掉用了Editor类里的OnInspectorGUI()方法,可是RectTransfm的OnInspectorGUI()方法是在RectTransformEditor这个类写的。

但是问题就来了,RectTransformEditor这个类不是一个对外公开的类。所以不能继承它,那也就无法调用它的OnInspectorGUI()方法了,所以就有了上述问题。

这里有一个巧妙的反射方法,完美的解决这个问题。https://gist.github.com/liortal53/352fda2d01d339306e03

理论上unity提供的每一个脚本都有一个 XXXEditor 类 , 用来绘制它的面板。(本文用到的就是 RectTransformEditor)如果你不确定可以去我反编译的代码里面去找。https://bitbucket.org/xuanyusong/unity-decompiled

如下图所示,现在既保留了原有的布局,也可以方便的拓展了。。

Unity3D研究院编辑器之不影响原有布局拓展Inspector(二十四) - 雨松MOMO程序研究院 - 2

版本: Unity5.3.3

posted on 2016-11-22 10:05  Sun‘刺眼的博客  阅读(663)  评论(0编辑  收藏  举报

导航