Введение в программирование в Unity
Unity является настраиваемым и расширяемым по дизайну, и почти все в некоторой степени может быть написано. Многие элементы можно настроить с помощью различных Мнения редакторов имеют соответствующее открытое представление в виде класса C#, с которым можно работать из кода.
Вы можете использовать Editor APIs для настройки и расширения авторских инструментов Editor для улучшения рабочих процессов разработки. Вы можете использовать Engine APIs для определения функциональных возможностей приложения во время выполнения, включая графику, физику, поведение персонажей и ответы на ввод пользователя.
API скриптов ссылка даёт полный и авторитетный справочник по всем открытым API Unity. Руководство добавляет к нему контекст и рекомендации.
Скриптовая среда Unity
Unity поддерживает скрипты на языке программирования C#. C# (произносится C-sharp) является управляемым, объектно-ориентированным языком программирования, который является частью платформы .NET и работает в кросс-платформенном runtime .NET. Другие языки .NET могут быть использованы с Unity, если они могут компилировать совместимый DLL, см. Управляемые плагины для более подробной информации.
Среда скриптов относится к обоим:
- Ваша собственная локальная среда или контекст, в котором вы пишете код. Это включает редактор кода (IDE) и интегрированное решение управления исходным кодом и операционную систему.
- Скриптовая среда C# предоставляет Unity. Заданная версия Unity поддерживает заданную версию платформы .NET, которая определяет библиотеки .NET, которые вы можете использовать в своем коде.
Дополнительные сведения об окружении и инструментах скриптов см. в Окружающая среда и инструменты.
Как работают сценарии в Unity
C# скрипты (файлы с .cs расширение файла) являются активов в вашем проекте, хранящихся в Assets папку и сохраняется как часть база данных об активах. Вы можете создавать шаблонные скрипты, которые происходят из общего встроенный Unity типы через Скриптирование подменю Активы > Создать меню.
Вы настраиваете по умолчанию Внешний Редактор Скриптов, который является программой Unity, в которой открываются ассеты вашего скрипта для редактирования. Обычно это будет один из поддерживаемых IDEs для разработки Unity.
Вы можете создавать свои собственные обычные типы C# и логику для использования в вашей игре, если код, который вы пишете, совместим с активным профилем .NET. Но ваши скриптовые типы получают дополнительную функциональность в Unity, когда они наследуют от встроенного типа Unity.
Если ваши пользовательские типы наследуют от UnityEngine.Object, они будут назначаемы полям в окне Inspector. Наследование от MonoBehaviour позволяет скрипту быть прикрепленным к GameObject в качестве компонента для управления поведением GameObject в сцене.
Дополнительные сведения о фундаментальных типах Unity, которые можно наследовать, см. в Основные типы Unity.
Дополнительные сведения о просмотре скриптов и редактировании компонентов скриптов в Inspector см. в Просмотр сценариев.
Редактор и скрипты времени выполнения
Существует два различных контекста, в которых может запускаться ваш код:
- В Unity Editor во время создания, обычно как часть пользовательских инструментов редактирования и окон, которые поддерживают ваш собственный процесс разработки.
- В приложении во время выполнения, как часть пользовательского интерфейса.
Исходные файлы, содержащие код только для редактора, обычно называются скриптами редактора и могут быть исключены из сборок проигрывателя либо путем их размещения в папках с названием Editor или путем использования файлы определения сборки Дополнительные сведения см. в разделе Папка редактора.
Регионы кода также могут быть условно компилированы для использования только Редактором с помощью директивы препроцессора #if UNITY_EDITOR. Для более подробной информации см. Условная компиляция.
Большая часть основных открытых API Unity находится либо в UnityEditor или UnityEngine APIs в пространстве UnityEditor пространства имен доступны только в Редакторе, и попытка использовать их в коде во время выполнения приводит к ошибкам компиляции.
Работая в Редакторе, вы можете иметь код, который вы хотите запустить как в режиме редактирования, так и в режиме воспроизведения. Вы можете вызвать некоторые UnityEditor APIs в режиме воспроизведения для целей тестирования, визуализации или запуска операций с ассетами. Аналогичным образом, вы можете вызвать UnityEngine APIs в режиме редактирования, используя атрибуты [ExecuteInEditMode] или [ExecuteAlways] для этих секций кода.
Тем не менее, всегда помните исключить из сборок Player в режиме выполнения скрипты Редактора и код, использующий UnityEditor APIs.
Компиляция и перезагрузка кода
Компиляция преобразует C# код, который вы пишете, в код, который работает на данной целевой платформе. Некоторые аспекты компиляции находятся под вашим контролем, а другие нет. Организуя ваши скрипты в сборки, вы можете уменьшить ненужную перекомпиляцию и эффективно управлять зависимостями. С условной компиляцией вы можете избирательно включать или исключать секции вашего кода из компиляции.
В зависимости от ваших настроек, Unity перекомпилирует и перезагружает ваш код в различных контекстах. Перезагрузка кода нужна, чтобы изменения вступили в силу или чтобы сохранить состояние при переходе между режимом редактирования и режимом воспроизведения, но она также влияет на производительность и скорость итераций. Важно понимать эти издержки и то, как можно настроить поведение перезагрузки кода в Unity, чтобы их снизить.