Unity 6.3
0 онлайн 36 гостей 3 в системе
Вход

Введение в сборки в Unity

Unity предоставляет два специальных типа ассетов, определения сборок и ссылки на сборки, для организации скриптов в сборки.

Сборка представляет собой библиотеку кода C#, содержащую компилированные классы и структуры, которые определены вашими скриптами и которые также определяют ссылки на другие сборки. Дополнительные сведения о сборках в C# см. в Сборки в .NET

По умолчанию Unity компилирует почти все ваши игровые скрипты в предопределенную сборку, называемую Assembly-CSharp.dll. Unity также создает несколько меньших, специализированных предопределенных сборок.

Эта схема работает приемлемо для небольших проектов, но имеет некоторые недостатки по мере того, как вы добавляете больше кода в ваш проект:

  • Каждый раз, когда вы изменяете один скрипт, Unity должен перекомпилировать все другие скрипты, увеличивая общее время компиляции для итеративных изменений кода.
  • Любой скрипт может напрямую получить доступ к типам, определенным в любом другом скрипте, что может затруднить рефакторинг и улучшение кода.
  • Все скрипты скомпилированы для всех платформ.

Определяя сборки, вы можете организовать свой код таким образом, чтобы обеспечить модульность и возможность повторного использования. Скрипты в определенных сборках больше не добавляются в сборки по умолчанию и могут иметь доступ только к скриптам в других пользовательских сборках.

Концептуальная иллюстрация организации скриптов в несколько пользовательских сборок в качестве альтернативы компиляции всех скриптов в сборке по умолчанию. Стрелка указывает с сборки по умолчанию Assembly-Csharp на альтернативную конфигурацию, в которой пользовательская Main сборка напрямую ссылается на две другие пользовательские сборки, называемые Stuff и ThirdParty. Stuff, в свою очередь, ссылается на четвертую пользовательскую сборку, называемую Library.
Концептуальная иллюстрация организации скриптов в несколько пользовательских сборок в качестве альтернативы компиляции всех скриптов в сборке по умолчанию. Стрелка указывает с сборки по умолчанию Assembly-Csharp на альтернативную конфигурацию, в которой пользовательская Main сборка напрямую ссылается на две другие пользовательские сборки, называемые Stuff и ThirdParty. Stuff, в свою очередь, ссылается на четвертую пользовательскую сборку, называемую Library.

Поскольку Главный ссылается на Stuff, а не наоборот, вы знаете, что любые изменения кода в Главный не могут повлиять на код в Stuff. Аналогичным образом, поскольку Библиотека не зависит от каких-либо других сборок, вы можете легче повторно использовать код в Библиотека в другом проекте.

Определение сборок

Чтобы организовать код проекта в сборки, создайте папку для каждой требуемой сборки и переместите скрипты, которые должны принадлежать каждой сборке, в соответствующую папку. Затем создайте активы определения сборки для указания свойств сборки.

Unity компилирует все скрипты в папке, содержащей определение сборки, в одно сборочное пространство с использованием имени и других параметров, определенных ассетом. Сборочное пространство включает все скрипты в подпапках, если подпапки не имеют собственного определения сборки или ассета Reference Assembly.

Чтобы включить скрипты из папки, не являющейся дочерней, в существующую сборку, создайте ассет Ссылка на сборку в папке, не являющейся дочерней, и настройте его на ссылку на ассет Определение сборки, определяющий целевую сборку. Например, можно объединить скрипты из всех папок Редактора в проекте в собственной сборке, независимо от того, где расположены эти папки.

Unity компилирует сборки в порядке, определяемом их зависимостями. Нельзя указать порядок, в котором происходит компиляция.

Определение сборки, к которой принадлежит скрипт

Чтобы определить, к какой сборке принадлежит скрипт, выберите файл скрипта в окне Project для просмотра его свойств в окне Inspector. Имя файла сборки и определение сборки, если оно существует, отображаются в разделе Информация о сборке раздела Inspector.

Папка редактора

Unity обычно компилирует любые скрипты в папках, именуемых Editor в предопределенный Assembly-CSharp-Editor сборка Однако, если вы создаете ресурс определения сборки в папке, имеющей имя «Сборка» или «Сборка» в Editor папка под ним, Unity более не помещает эти скрипты Редактора в предопределенную сборку Редактора. Вместо этого они попадают в новую сборку, созданную Определением сборки, куда они, возможно, и не должны попадать. Editor папок, вы можете создать определение сборки или справочные ресурсы в каждом Editor папку, чтобы поместить эти скрипты в одну или несколько сборок Редактора. Дополнительные сведения см. в разделе Создание сборки для кода редактора.

Дополнительные сведения об использовании зарезервированного имени папки Editor для скриптов Редактора см. в Ссылка на зарезервированное имя папки.

Дополнительные ресурсы