Не скажу ничего нового для тех, кто обжег губы куря справку, но инспектор Unity на самом деле довольно умная штука. =)
Если следовать некоторым правилам оформления и именования переменных, инспектор помогает держать проект в порядке.
Вот некоторые из фишек, которые я активно использую.
1. Отображение переменных в инспекторе.
если переменные называть именами вида variableName, то есть слова идут подряд и начиная со второго – с большой буквы (типичное оформление для VS), то инспектор показывает каждое слово с большой буквы, и разделяет слова пробелами.
2. Отображение private переменных в инспекторе
Иногда бывает нужно, да . Например чтобы увидеть в реальном времени изменение какой-нибудь переменной, и при этом не захламлять буфер вывода DebugLog (а то любят некоторые =\ ). Для этого поле нужно нужно прямо над переменной написать параметр [SerializeField].
3. Скрытие public переменных
А вот такие ситуации бывают даже чаще чем хотелось бы. Прячутся переменные с помощью параметра [HideInInspector].
3. Отображение объектов классов
Так же бывает удобно создавать иерархию свойств, которая отображается в инспекторе в виде выпадающего меню. скажем у вас есть класс, которых хранит скажем настройки нескольких однотипных объектов сцены. Чтобы форсировать отображение объектов класса в инспекторе, надо класс так же пометить как сериализуемый [System.Serializable].
4. Вызов функций из скрипта через подменю
Моя любимейшая фишка =) Просто нужную функцию надо пометить как [ContextMenu("Menu Name")]
Нажимаем на кнопочку, выпадает меню, в котором видим нужный пункт. Нажимаем – вызывается соответствующая функция. Я это использовал для заполнения и очистки массивов со всем объектами сцены.
и собственно пример кода
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // some code here [ContextMenu("Clear All")] void DoSomething() { // Just do smth! } } [System.Serializable] public class InspectorTest { public string name = "TestField"; public bool publicVariable = false; [SerializeField] private bool privateVariable = true; [HideInInspector] public string noMatterHowYouCallMeImInvisible = "blablabla"; } |
Такой код даст вот такой результат в инспекторе:
Однако зачем нам дублировать название объекта в названии переменной и названии меню? Добавим [HideInInspector]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [System.Serializable] public class InspectorTest { [HideInInspector] public string name = "TestField"; public bool publicVariable = false; [SerializeField] private bool privateVariable = true; [HideInInspector] public string noMatterHowYouCallMeImInvisible = "blablabla"; } |
Получим такую вот красотень =)
Наверняка что-то забыл, но самое интересное вроде описАл.
Спасибо Fox за наводку
Feel free to comment.
2 комментария на «Inspector Features»
Ваш отзыв
Вы должны войти, чтобы оставлять комментарии.
23 Дек 2013 в 15:48
lewisohn@dora.progandist” rel=”nofollow”>.…
спс….
23 Авг 2014 в 19:06
confirmation@emerged.accomplishing” rel=”nofollow”>.…
благодарствую!…