Четверг, 26 Декабря 2024, 07:26

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Программирование редактора Unity
Nordicus666Дата: Пятница, 24 Марта 2017, 15:29 | Сообщение # 1
был не раз
Сейчас нет на сайте
сам не особо разбираюсь, потому нужен скрипт с пояснениями, либо подробные объяснения либо ссылки на статьи с ответом на мой вопрос
каким образом из Editor скрипта сделать скрытие и показывание в инспекторе определенных переменных в зависимости от еще одной переменном в текущем скрипте?
имеется скрипт, в нем есть много-много переменных и одна переменная Type, надо что бы в инспекторе показывались только определенные и скрывались остальные в зависимости от Type
EchoITДата: Пятница, 24 Марта 2017, 15:34 | Сообщение # 2
старожил
Сейчас нет на сайте
Nordicus666,

Лень писать большой код или искать инфу, где ты можешь это сам почитать, но делается это примерно так (в скрипте редактора):
Код

public override void OnInspectorGUI()
{
    // Если не рисуешь стандартный инспектор методом DrawDefaultInspector(), то тут нужно вывести выбор твоего Type.

    if (Type == Type.NeededType) // На примере Type вида enum
    {
         // Тут нужно отображать тут нужные элементы редактора/переменные
    }
}


Разумеется, дефолтный инспектор ты не рисуешь. Или можно рисовать, но сделать все те переменные скрытыми в инспекторе, используя [HideInInspector], и отрисовывать через скрипт редактора нужные, но зачем?

Можно так же switch использовать.

Тут ещё есть информация: Unity Learn. Лучше это подробно изучи, потому что там вполне может оказаться ещё что-то полезное для тебя.


Долгожданный анонсик: State of War

Сообщение отредактировал EchoIT - Пятница, 24 Марта 2017, 15:40
Nordicus666Дата: Пятница, 24 Марта 2017, 17:36 | Сообщение # 3
был не раз
Сейчас нет на сайте
а сами команды скрытия и показывания переменных с точки зрения Editor как выглядят?
EchoITДата: Пятница, 24 Марта 2017, 17:46 | Сообщение # 4
старожил
Сейчас нет на сайте
Nordicus666, ну по сути они выглядят как GUILayout.Toggle("Название", переменная_в_которой_значение) или нечто подобное. Т.е. ты просто пишешь, какое поле отображать (или не пишешь/пихаешь в if или switch, чтобы не отображать, когда не надо).

Поля там разные, все есть в справке. Toggle - это галочка, типа как для bool. И вроде для эдитора надо EditorGUILayout, но это не точно (я сам, к сожалению, не разобрался, где как правильнее использовать, поэтому мешаю всё подряд).


Долгожданный анонсик: State of War
RangerДата: Воскресенье, 26 Марта 2017, 06:16 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Цитата Nordicus666 ()
а сами команды скрытия и показывания переменных с точки зрения Editor как выглядят?

Код
    public override void OnInspectorGUI()
    {
        
        serializedObject.Update();
        
        if (Type == Type.NeededType) // На примере Type вида enum
        {
         // Тут нужно отображать тут нужные элементы редактора/переменные
         var prop = serializedObject.FindProperty("myField");
         EditorGUILayout.PropertyField(prop, false);    
         }

        // Apply changes
        serializedObject.ApplyModifiedProperties();
    }

link




Сообщение отредактировал Ranger - Воскресенье, 26 Марта 2017, 06:17
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг