创建自定义 Unity 检查器布局

Create Custom Unity Inspector Layout

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

所以我有一个脚本,当一个对象被点击时,它会调用另一个脚本的函数。我希望能够传递参数等等,但是 Inspector 弄乱了一堆开关、int 字段等。

有什么办法可以重现这种东西吗?

与其说是事件类型,不如说是小功能框。如果这是有道理的:)

谢谢!

您在该屏幕截图中显示的框是 Event Trigger. There isn't any way that I know of that lets you separate the UI object from this underlying type. So there isn't a way to just draw the delegate box.. However, you can make a class based off of EventTrigger and then you can extend EventSystemEditor

您还可以创建一个从 UnityEvent in this fashion 派生的 class,它会按照您希望的方式显示一个函数委托框。

但是,同样,这不会为您提供绘制 function/delegate 框的绘图方法。我不知道有什么方法可以让 Unity3D 让你这样做。

您可以查看完整的GUI绘图方法列表:

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

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

但它就是不存在。


我知道有些人已经成功地使用 Inspector 魔法实现了类似的效果,重新创建了类似的方面和功能。我知道 FullInspector 可以在其检查器中执行委托,您可以查看其源代码以弄清楚如何操作,但最终可能需要大量工作。专门序列化委托是地狱般的,所以如果你想让它序列化,我什至不会打扰。我建议找到一条阻力最小的不同路径。

这是一个替代方案:

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

这绝对是可能的,但同样,我认为这将花费大量时间来详细说明,您最好找到一种方法来满足您的要求,而无需这种级别的编辑器 GUI 恶作剧。