- •Unity Script
- •Глава 1 Введение
- •Глава 2 Сценарии
- •Глава 3 Основные понятия
- •1. Назначение ссылочных типов переменных при помощи инспектора
- •2. Расположение объектов в окне иерархии
- •3. Имена и теги
- •4. Принятие в качестве параметра
- •5. Все скрипты одного типа
- •1. Используйте статическую типизацию.
- •2. Используйте #pragma strict
- •3. Кешируйте найденные компоненты.
- •4. Используйте встроенные масивы.
- •5. Не вызывайте функцию, если Вам это не нужно.
- •1. Носледование от MonoBehaviour
- •2.Использование функций Awake или Start для инициализации.
- •3. Имя класса должно соответствовать имени файла.
- •4. Корутины имеют иной синтаксис в c#.
- •5. Не используйте пространства имен.
- •6. Только публичные поля сериализуются и показываются в инспекторе.
- •7. Избегайте использования конструкторов или инициализации переменных.
- •1. Все скрипты в "Standard Assets", "Pro Standard Assets" или "Plugins" компилируются первыми.
- •2. Все скрипты в "Standard Assets/Editor", "Pro Standard Assets/Editor" или "Plugins/Editor" компилируются далее.
- •3. Все другие скрипты вне "Editor" компилируются далее.
- •4. Все скрипты в папке "Editor" компилируются последними.
1. Все скрипты в "Standard Assets", "Pro Standard Assets" или "Plugins" компилируются первыми.
Скрипты в этих папках не могут напрямую обращаться к скриптам вне этих папок.
Невозможно обращаться к классам или их переменным напрямую, однако возможна коммуникация с ними с использованием GameObject.SendMessage.
2. Все скрипты в "Standard Assets/Editor", "Pro Standard Assets/Editor" или "Plugins/Editor" компилируются далее.
Если Вы хотите использовать пространство имен UnityEditor тогда поместите Ваши скрипты в эти папки. Например для добавления меню или создания пользовательского мастера Вам нужно поместить Ваши скрипты в эти папки.
Эти скрипты могут иметь прямой доступ к скриптам из предыдущей группы.
3. Все другие скрипты вне "Editor" компилируются далее.
Все скрипты не в папках выше или не в папке "Editor" компилируются далее.
Все скрипты, которые компилируются на этом шаге имеют доступ ко всем скрипта в первой группе ("Standard Assets", "Pro Standard Assets" or "Plugins"). Это позволяет Вам взаимодействовать между различными языками программирования. Например, если вы хотите создать Javascript, который использует C# скрипт: поместите C# в папку "Standard Assets" а Javascript вне этой папки. Javascript теперь сможет напрямую обращаться к C# скрипту.
Новые скрипты, помещаемые в первую группу копилируются дольше, т.к. после их копмпиляции необходимо заново откомпилировать скрипты третьей группы. Т.о. если Вы хотите уменьшить время компиляции, помещайте редко изменяемые скрипты в первую группу, а часто изменяемые скрипты в третью.
4. Все скрипты в папке "Editor" компилируются последними.
Если Вы хотите использовать пространство имен UnityEditor тогда поместите Ваши скрипты в эту папку. Например для добавления меню или создания пользовательского мастера Вам нужно поместить Ваши скрипты в эту папку.
Эти скрипты имеют доступ ко всем скриптам из всех предыдущих групп.
Добавочно любой скрипт в папке, называемой WebPlayerTemplates не компилируется восе.
Условная компиляция Conditional compilation against the Unity version.
Начиная с версии Unity 2.6 были добавлены определения препроцессора C#. Эти определения указывают используемую версию Unity и предназначены для условной компиляции с учетом специфических особенностей данной версии. Например:
// Указываем версию с учётом ревизии
#if UNITY_2_6_0
// Используем особенности, присущие версии 2.6.0
#endif
// Указываем версию без учета ревизии
#if UNITY_2_6
// Используем особенности версии 2.6.x
#endif
Этот код может быть использован для учета особенностей доступных только в указанной версии Unity. Заметим, что эти определния присутствуют только начиная с версии 2.6. Будущие версии также будут предоставлять соответствующие определения для идентификации версии в Ваших скриптах.
Совместимость Unity и Mono
Вы можете использовать библиотеки классов .Net в скриптах, которые Вы пишете для Unity. В зависимости от выбранного в установках проекта уровня совместимости с .Net, Unity более или менее полно поддерживает библиотеки классов.
Generic функции
Некоторые функции в этом мануале (например, различные функции GetComponent) перечислены с вариантом, который имеет букву T или имя типа в угловых скобках после имени функции:
function FuncName.<T>(): T;
Такие функции известны как "generic" функции. Значимым для скриптинга является что вы получите указанный тип параметра и/или возвращаемого значения когда вы вызываете эти функции. В JavaScript это может быть использовано, чтобы обойти ограничения динамической типизации:
// Тип правильно определяется, т.к. он определен в теле функции.
var obj = GetComponent.<Rigidbody>();
В C#, это может сохранить множество нажатий клавиш и преобразований типов:
Rigidbody rb = go.GetComponent<Rigidbody>();
// ...сравните с:
Rigidbody rb = (Rigidbody) go.GetComponent(typeof(Rigidbody));
Любая функция, которая имеет generic вариант указанный в мануале позволяет использовать этот специальный синтаксис вызова.
