Не скажу ничего нового для тех, кто обжег губы куря справку, но инспектор 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";
}

Такой код даст вот такой результат в инспекторе:
Рисунок 2

Однако зачем нам дублировать название объекта в названии переменной и названии меню? Добавим [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";
}

Получим такую вот красотень =)
Рисунок 3

Наверняка что-то забыл, но самое интересное вроде описАл.
Спасибо Fox за наводку ;)
Feel free to comment.

VN:F [1.9.3_1094]
Rating: 9.9/10 (19 votes cast)
VN:F [1.9.3_1094]
Rating: +14 (from 14 votes)
Inspector Features, 9.9 out of 10 based on 19 ratings

2 комментария на «Inspector Features»

  1. Armando

    lewisohn@dora.progandist” rel=”nofollow”>.…

    спс….

    VA:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.3_1094]
    Rating: 0 (from 0 votes)
  2. arturo

    confirmation@emerged.accomplishing” rel=”nofollow”>.…

    благодарствую!…

    VA:F [1.9.3_1094]
    Rating: 0.0/5 (0 votes cast)
    VA:F [1.9.3_1094]
    Rating: 0 (from 0 votes)

Ваш отзыв

Вы должны войти, чтобы оставлять комментарии.



Страница 1 of 0