Создать пользовательский макет инспектора Unity - PullRequest
0 голосов
/ 02 сентября 2018

Итак, я видел несколько таких сценариев в единстве, и мне интересно, как я могу воссоздать его в своих сценариях?

Итак, у меня есть скрипт, когда при нажатии на объект он вызывает функцию другого скрипта. Я хочу иметь возможность передавать аргументы и многое другое, но Инспектор запутался в куче переключателей, полей int и т. Д.

Есть ли способ воссоздать подобные вещи?

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

Не столько тип события, сколько маленький функциональный блок. Если это имеет смысл:)

Спасибо!

1 Ответ

0 голосов
/ 02 сентября 2018

Поле, показанное на этом скриншоте, представляет собой Event Trigger . Я не знаю, каким образом можно отделить объект пользовательского интерфейса от этого базового типа. Таким образом, нет способа просто нарисовать делегатский ящик. Однако вы можете создать класс на основе EventTrigger, а затем расширить EventSystemEditor .

Вы также можете создать класс, унаследованный от UnityEvent , таким образом , и он будет отображаться в окне делегата функции так, как вы этого хотели.

Однако, опять же, это просто не даст вам метод рисования, который рисует поле функции / делегата для вас. Я не знаю ни одного способа заставить Unity3D позволить вам это сделать.

Вы можете проверить весь список методов рисования GUI:

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

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

Но его просто нет.


Я знаю, что некоторым людям удавалось добиться подобных эффектов с помощью мастера Инспектора, воссоздавая похожий аспект и функциональность. Я знаю, что FullInspector может выполнять делегирование в его инспекторе, и вы можете проверить его исходный код, чтобы выяснить, как, но это может оказаться большой работой. Конкретная сериализация делегата является адской, так что если вы хотите, чтобы он сериализовался, я бы даже не стал беспокоиться. Я предлагаю найти другой путь минимального сопротивления.

Вот альтернатива:

Вы можете собрать методы в классе, на который вы нацелены, с помощью отражения и представить их в выпадающем меню. Затем, после выбора метода, вы снова можете использовать отражение, чтобы увидеть, какие параметры требуются этому методу, и использовать функции графического интерфейса для рисования соответствующих полей, необходимых для получения этих параметров из пользовательского ввода.

Это определенно возможно, но, опять же, я думаю, что на разработку уйдет довольно много времени, и вам лучше найти способ удовлетворить ваши требования без этого уровня редактирования GUI редактора.

...