свой MultilineDrawer

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

свой MultilineDrawer

Сообщение KingPeas 10 апр 2014, 07:35

Здравствуйте коллеги
Вопрос в следующем. Хочется воспроизвести стандартный MultilineDrawer? вот только не знаю каким образом реализовать вывод Сейчас это делается в две строки
10-04-2014 11-02-44.png

а как разместить текстовую область рядом с меткой которая подравнивается под другие метки полей с учетом ширины инспектора не знаю(красная область на картинке).
10-04-2014 11-08-53.png

Сейчас код по выводу выглядит вот так
Синтаксис:
Используется csharp
public override void Draw(Rect position, SerializedProperty property, GUIContent label)
    {
        position.height = EditorGUIUtility.singleLineHeight;
        EditorGUI.LabelField(position, label);
        position.y += EditorGUIUtility.singleLineHeight;
        position.height = EditorGUIUtility.singleLineHeight*multilineAttribute.lines;
        property.stringValue = EditorGUI.TextArea(position, property.stringValue);
    }


Посмотрел как это делается в Editor на сколько монодевелоп позволял, понял что используются встроенные функции к которым у меня доступа нет. Кто знает в каком направлении копать?
У вас нет доступа для просмотра вложений в этом сообщении.
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ...
Мой первый плагин PropertyDrawerCollection
Аватара пользователя
KingPeas
UNIт
 
Сообщения: 78
Зарегистрирован: 12 сен 2012, 12:34
Откуда: Новосибирск
Skype: evgeniygurlev
  • Сайт
  • ICQ

Re: свой MultilineDrawer

Сообщение Neyl 10 апр 2014, 09:15

Ширину лейбла можете получить через EditorGUIUtility.labelWidth. Есть еще EditorGUI.PrefixLabel, который рисует лейбл в зависимости от ширины инспектора и возвращает Rect, оставшийся для самого контрола.
Аватара пользователя
Neyl
UNIверсал
 
Сообщения: 404
Зарегистрирован: 20 июн 2010, 10:17

Re: свой MultilineDrawer

Сообщение KingPeas 10 апр 2014, 12:51

Спасибо, то что надо:
Синтаксис:
Используется csharp
    public override void Draw(Rect position, SerializedProperty property, GUIContent label)
    {
        position.height = EditorGUIUtility.singleLineHeight;
        Rect r = EditorGUI.PrefixLabel(position, label);
        r.height = EditorGUIUtility.singleLineHeight*multilineAttribute.lines;
        property.stringValue = EditorGUI.TextArea(r, property.stringValue);
    }
 
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ...
Мой первый плагин PropertyDrawerCollection
Аватара пользователя
KingPeas
UNIт
 
Сообщения: 78
Зарегистрирован: 12 сен 2012, 12:34
Откуда: Новосибирск
Skype: evgeniygurlev
  • Сайт
  • ICQ


Вернуться в Editor

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1