Когда Unity загружает проект, диспетчер пакетов Unity считывает манифест проекта, чтобы составить список пакетов, которые необходимо получить и загрузить. Когда пользователь устанавливает или удаляет пакет через окно диспетчера пакетов, диспетчер пакетов сохраняет эти изменения в файле манифеста проекта. Файл манифеста проекта управляет списком пакетов через объект dependencies.
Кроме того, манифест проекта служит файлом конфигурации для диспетчера пакетов, который использует манифест для настройки URL-адреса реестра и регистрации пользовательских реестров.
Вы можете найти файл манифеста проекта с именем manifest.json
в папке Packages
в корневой папке вашего Единый проект. Как и файл манифеста пакета, файл манифеста проекта использует синтаксис JSON (нотация объектов JavaScript).
Свойства
Все свойства являются необязательными. Однако, если файл манифеста вашего проекта не содержит никаких значений, окно диспетчера пакетов не загружается, а диспетчер пакетов не загружает пакеты.
Совет. В любой момент вы можете исправить любые проблемы с реестром, выбрав Reset packages to defaults в главное меню справки Unity. Однако имейте в виду, что это действие сбрасывает все изменения, внесенные вами в зависимости вашего проекта, поэтому лучше делать это в крайнем случае.
Ключ | JSON тип | Описание |
---|---|---|
dependencies See in Словарь |
Object | Коллекция пакетов, необходимых для вашего проекта. Сюда входят только прямые зависимости (непрямые зависимости перечислены в манифестах пакетовКаждый пакет имеет манифест, который предоставляет диспетчеру пакетов информацию о пакете.Манифест содержит такую информацию, как имя пакета, его версия, описание для пользователей, зависимости от других пакетов (если есть) и другие сведения. Подробнее См. в Словарь). Каждая запись сопоставляет имя пакета с минимальной версией, необходимой для проекта:
Указание номера версии означает, что вы хотите, чтобы диспетчер пакетов загрузил пакет из реестра пакетов (то есть источником пакета является реестр ). Однако, помимо использования версий, вы также можете указать путь к локальной папке или архивному файлу или URL Git. Примечание. Вам не нужно указывать здесь встроенные пакеты, поскольку диспетчер пакетов находит их внутри |
enableLockFile | Boolean | Включает файл блокировки, чтобы гарантировать детерминированное разрешение зависимостей. По умолчанию установлено значение true . Дополнительные сведения см. в разделе Использование файлов блокировки. |
registry | String | Это свойство зарезервировано только для внутреннего использования.
Примечание. Если вы хотите подключиться к серверу реестра пакетов в дополнение к реестру Unity, используйте реестр с областью действия. |
resolutionStrategy | String | Обновляет косвенные зависимости на основе правил семантического управления версиями. По умолчанию установлено значение lowest . Дополнительную информацию см. в разделе Настройка стратегии разрешения проблем ниже.. |
scopedRegistries | Array of Objects | Укажите пользовательские реестры в дополнение к реестру по умолчанию. Это позволяет размещать собственные пакеты.
Дополнительные сведения см. в разделе Реестры с ограниченной областью действия. |
testables | Array of Strings | Список имен пакетов, тесты которых вы хотите загрузить в Unity Test FrameworkПакет Test Framework (ранее называвшийся Test Runner) — это инструмент Unity, который тестирует ваш код как в режиме редактирования, так и в режиме воспроизведения, а также на целевом платформах, таких как Standalone, Android или iOS. Подробнее См. в Словарь. Дополнительные сведения см. в разделе Добавление тестов в пакет. Примечание. Вам не нужно указывать здесь встроенные пакеты, поскольку Unity Test Framework предполагает, что они тестируются по умолчанию. |
useSatSolver | Boolean | Включает алгоритм разрешения зависимостей на основе SAT Solver. По умолчанию установлено значение true .
Если вы установите для этого свойства значение |
Пример
{
"registry": "https://my.registry.com",
"scopedRegistries": [{
"name": "My internal registry",
"url": "https://my.internal.registry.com",
"scopes": [
"com.company"
]
}],
"dependencies": {
"com.unity.package-1": "1.0.0",
"com.unity.package-2": "2.0.0",
"com.company.my-package": "3.0.0",
"com.unity.my-local-package": "file:/my_package_folder",
"com.unity.my-local-tarball": "file:/my_package_tarball.tgz",
"com.unity.my-git-package": "https://my.repository/my-package.git#v1.2.3"
},
"enableLockFile": true,
"resolutionStrategy": "highestMinor",
"testables": [ "com.unity.package-1", "com.unity.package-2" ]
}
Настройка стратегии разрешения
Хотя вы можете явно добавлять версии пакетов в манифест проекта, чтобы переопределить разрешение зависимостей пакетов Unity и обновить косвенные зависимости, это не очень хорошая стратегия по двум причинам:
- На владельца проекта возлагается больше ответственности за поддержку версий зависимостей.
- Со временем у вас могут появиться зависимости, которые не требуются для проекта.
Лучше настроить, как диспетчер пакетов выбирает косвенные зависимости на основе правил семантического управления версиями, задав свойство resolutionStrategy:
Значение: | Описание: |
---|---|
lowest | Не обновляйте косвенные зависимости. Вместо этого он использует именно запрошенную версию. Это режим "по умолчанию". |
highestPatch | Обновите до самой высокой версии с теми же основными и второстепенными компонентами. Например, с запрошенной версией 1.2.3 эта стратегия выбирает самую старшую версию в диапазоне [1.2.3, 1.3.0) (то есть >= 1.2.3 и < 1.3.0 ). |
highestMinor | Обновите до самой высокой версии с тем же основным компонентом. Например, с запрошенной версией 1.2.3 эта стратегия выбирает самую старшую версию в диапазоне [1.2.3, 2.0.0) (то есть >= 1.2.3 и < 2.0.0 ).
Примечание. Версия |
highest | Обновите до самой высокой версии. Например, с запрошенной версией 1.2.3 эта стратегия выбирает самую старшую версию в диапазоне [1.2.3,) (то есть >= 1.2.3 без верхней границы) |
Примечание. Эти диапазоны никогда не позволяют зависимости перейти от стабильной версии к предварительный просмотр пакета.