所以我已经看到了一些统一的脚本,我想知道如何在自己的脚本中重新创建它们?
所以我有一个脚本,当单击一个对象时,它将在另一个脚本上调用一个函数。我希望能够传递参数和更多信息,但是Inspector的一堆切换开关,int字段等使情况变得混乱了。
有什么办法可以重新创建这种东西吗?
不是事件类型而是小功能框。如果这样的话:)
谢谢!
答案 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技巧,您最好找到一种满足您要求的方法。