Как мне нарисовать поле с пользовательским ящиком свойств в моем пользовательском инспекторе?

#c# #unity3d

#c# #unity3d

Вопрос:

Я очень растерян. Что я хочу сделать, так это нарисовать ящик свойств класса InputAction: введите описание изображения здесь

В пользовательском редакторе для класса.

Я считаю, что мне нужно будет использовать EditorGUILayout .PropertyField() для достижения этой цели. Однако мне нужно было бы преобразовать экземпляр класса InputAction в SerializedProperty, чтобы передать его через функцию. Я не знаю, как это преобразовать.

Я не слишком уверен, на правильном ли я пути; Ящики свойств сбивают меня с толку, а сканирование системного кода ввода сбивает меня с толку еще больше.

Итак, если бы я свел вопрос к одному обобщающему вопросу, это было бы: «Как мне нарисовать поле с пользовательским ящиком свойств в моем пользовательском инспекторе?»

Спасибо! Я ценю помощь.

Ответ №1:

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

Вы справедливо запутались в том, как преобразовать InputAction в SerializedProperty , поскольку вы не можете. InputAction — это простой класс C #, в то время как SerializedProperty может быть создан только из UnityEngine.Object . Возможно, Unity рисует все это окно с помощью пользовательского редактора, а не по частям с использованием пользовательских свойств.

Возможно, вы могли бы расширить редактор, используемый для рисования этого окна, поскольку пакет InputSystem включает документацию по крайней мере по одному пользовательскому редактору: InputParameterEditor . Я еще не изучал это сам, удачи!