Поле, показанное на этом скриншоте, представляет собой Event Trigger . Я не знаю, каким образом можно отделить объект пользовательского интерфейса от этого базового типа. Таким образом, нет способа просто нарисовать делегатский ящик. Однако вы можете создать класс на основе EventTrigger
, а затем расширить EventSystemEditor .
Вы также можете создать класс, унаследованный от UnityEvent , таким образом , и он будет отображаться в окне делегата функции так, как вы этого хотели.
Однако, опять же, это просто не даст вам метод рисования, который рисует поле функции / делегата для вас. Я не знаю ни одного способа заставить Unity3D позволить вам это сделать.
Вы можете проверить весь список методов рисования GUI:
https://docs.unity3d.com/ScriptReference/EditorGUILayout.html
https://docs.unity3d.com/ScriptReference/EditorGUI.html
Но его просто нет.
Я знаю, что некоторым людям удавалось добиться подобных эффектов с помощью мастера Инспектора, воссоздавая похожий аспект и функциональность. Я знаю, что FullInspector может выполнять делегирование в его инспекторе, и вы можете проверить его исходный код, чтобы выяснить, как, но это может оказаться большой работой. Конкретная сериализация делегата является адской, так что если вы хотите, чтобы он сериализовался, я бы даже не стал беспокоиться. Я предлагаю найти другой путь минимального сопротивления.
Вот альтернатива:
Вы можете собрать методы в классе, на который вы нацелены, с помощью отражения и представить их в выпадающем меню. Затем, после выбора метода, вы снова можете использовать отражение, чтобы увидеть, какие параметры требуются этому методу, и использовать функции графического интерфейса для рисования соответствующих полей, необходимых для получения этих параметров из пользовательского ввода.
Это определенно возможно, но, опять же, я думаю, что на разработку уйдет довольно много времени, и вам лучше найти способ удовлетворить ваши требования без этого уровня редактирования GUI редактора.