创建自定义Unity Inspector布局

时间:2018-09-01 21:06:53

标签: unity3d inspector

所以我已经看到了一些统一的脚本,我想知道如何在自己的脚本中重新创建它们?

所以我有一个脚本,当单击一个对象时,它将在另一个脚本上调用一个函数。我希望能够传递参数和更多信息,但是Inspector的一堆切换开关,int字段等使情况变得混乱了。

有什么办法可以重新创建这种东西吗?

A box that has a field for a object, a function and arguments if need

不是事件类型而是小功能框。如果这样的话:)

谢谢!

1 个答案:

答案 0 :(得分:2)

您在该屏幕截图中显示的框是Event Trigger。据我所知,没有任何方法可以让您将UI对象与此基础类型分开。因此,无法仅绘制委托框。但是,您可以基于EventTrigger创建一个类,然后可以扩展EventSystemEditor

您还可以创建一个从UnityEvent in this fashion派生的类,该类将以您希望的方式显示在函数委托框中。

不过,这仍然不能为您提供一种为您绘制功能/委托框的绘制方法。我不知道让Unity3D允许您这样做的单一方法。

您可以检查GUI绘制方法的整个列表:

https://docs.unity3d.com/ScriptReference/EditorGUILayout.html

https://docs.unity3d.com/ScriptReference/EditorGUI.html

但是它不在那里。


我知道有些人通过Inspector向导获得了相似的效果,并重新创建了相似的方面和功能。我知道FullInspector可以在其检查器中进行委托,您可以检查其源代码以了解如何进行操作,但最终可能需要大量工作。具体来说,序列化委托是令人毛骨悚然的,因此,如果您要序列化委托,我什至不会理会。我建议找到另一种最小阻力的路径。

这是替代方法:

您可以通过反射收集您要定位的类中的方法,并将其显示在下拉菜单中。然后,一旦选择了一种方法,您就可以再次使用反射来查看该方法需要哪些参数,并使用GUI函数绘制从用户输入中接收这些参数所需的适当字段。

这绝对有可能,但是我想再次花大量的时间进行阐述,而如果没有这种级别的Editor GUI技巧,您最好找到一种满足您要求的方法。