Введение в сборки в Unity
Unity предоставляет два специальных типа ассетов, определения сборок и ссылки на сборки, для организации скриптов в сборки.
Сборка представляет собой библиотеку кода C#, содержащую компилированные классы и структуры, которые определены вашими скриптами и которые также определяют ссылки на другие сборки. Дополнительные сведения о сборках в C# см. в Сборки в .NET
По умолчанию Unity компилирует почти все ваши игровые скрипты в предопределенную сборку, называемую Assembly-CSharp.dll. Unity также создает несколько меньших, специализированных предопределенных сборок.
Эта схема работает приемлемо для небольших проектов, но имеет некоторые недостатки по мере того, как вы добавляете больше кода в ваш проект:
- Каждый раз, когда вы изменяете один скрипт, Unity должен перекомпилировать все другие скрипты, увеличивая общее время компиляции для итеративных изменений кода.
- Любой скрипт может напрямую получить доступ к типам, определенным в любом другом скрипте, что может затруднить рефакторинг и улучшение кода.
- Все скрипты скомпилированы для всех платформ.
Определяя сборки, вы можете организовать свой код таким образом, чтобы обеспечить модульность и возможность повторного использования. Скрипты в определенных сборках больше не добавляются в сборки по умолчанию и могут иметь доступ только к скриптам в других пользовательских сборках.
Поскольку Главный ссылается на Stuff, а не наоборот, вы знаете, что любые изменения кода в Главный не могут повлиять на код в Stuff. Аналогичным образом, поскольку Библиотека не зависит от каких-либо других сборок, вы можете легче повторно использовать код в Библиотека в другом проекте.
Определение сборок
Чтобы организовать код проекта в сборки, создайте папку для каждой требуемой сборки и переместите скрипты, которые должны принадлежать каждой сборке, в соответствующую папку. Затем создайте активы определения сборки для указания свойств сборки.
Unity компилирует все скрипты в папке, содержащей определение сборки, в одно сборочное пространство с использованием имени и других параметров, определенных ассетом. Сборочное пространство включает все скрипты в подпапках, если подпапки не имеют собственного определения сборки или ассета Reference Assembly.
Чтобы включить скрипты из папки, не являющейся дочерней, в существующую сборку, создайте ассет Ссылка на сборку в папке, не являющейся дочерней, и настройте его на ссылку на ассет Определение сборки, определяющий целевую сборку. Например, можно объединить скрипты из всех папок Редактора в проекте в собственной сборке, независимо от того, где расположены эти папки.
Unity компилирует сборки в порядке, определяемом их зависимостями. Нельзя указать порядок, в котором происходит компиляция.
Определение сборки, к которой принадлежит скрипт
Чтобы определить, к какой сборке принадлежит скрипт, выберите файл скрипта в окне Project для просмотра его свойств в окне Inspector. Имя файла сборки и определение сборки, если оно существует, отображаются в разделе Информация о сборке раздела Inspector.
Папка редактора
Unity обычно компилирует любые скрипты в папках, именуемых Editor в предопределенный Assembly-CSharp-Editor сборка Однако, если вы создаете ресурс определения сборки в папке, имеющей имя «Сборка» или «Сборка» в Editor папка под ним, Unity более не помещает эти скрипты Редактора в предопределенную сборку Редактора. Вместо этого они попадают в новую сборку, созданную Определением сборки, куда они, возможно, и не должны попадать. Editor папок, вы можете создать определение сборки или справочные ресурсы в каждом Editor папку, чтобы поместить эти скрипты в одну или несколько сборок Редактора. Дополнительные сведения см. в разделе Создание сборки для кода редактора.
Дополнительные сведения об использовании зарезервированного имени папки Editor для скриптов Редактора см. в Ссылка на зарезервированное имя папки.