Файл манифеста Project
Когда Unity загружает проект, Unity Package Manager читает манифест проекта, чтобы вычислить список пакетов, которые нужно получить и загрузить. Когда пользователь устанавливает или удаляет пакет с помощью Package Manager окно, Package Manager файл манифеста проекта. Файл манифеста проекта управляет списком пакетов с помощью командной строки, а также зависимости объект.
Кроме того, манифест проекта служит файлом конфигурации для Package Manager, который использует манифест для настройки реестра URL и регистрации пользовательских регистров.
Вы можете найти файл манифеста проекта, называемый manifest.json, в Packages папка в корневой папке вашего Unity проекта. Как файл манифеста пакета, файл манифеста проекта использует JSON (JavaScript Объектная нотация) синтаксис.
Свойства
Все свойства необязательны. Однако, если файл манифеста проекта не содержит никаких значений, окно Package Manager не загружается, а окно Package Manager не загружает никаких пакетов.
| Ключ | JSON Тип | Описание |
|---|---|---|
| зависимости | Объект | Коллекция пакетов, необходимых для вашего проекта. Это включает только прямые зависимости (косвенные зависимости перечислены в манифесты пакетов). Каждая запись отражает имя пакета до минимума версия требуемые для проекта: {"dependencies": {"com.my-package": "2.3.1","com.my-other-package": "1.0.1-preview.1",etc.}}Указание номера версии указывает на то, что требуется Package Manager загрузить пакет из реестра пакетов (т.е. из реестра пакетов источник пакета является реестр). Однако, помимо использования версии, вы также можете указать путь к локальной папке или архиву, или а Гит URL. Примечание: Вам не нужно указывать встроенный пакеты здесь, потому что Package Manager находит их внутри проекта Packages папку и загружает их автоматически. Package Manager игнорирует любую запись, если существует встроенный пакет с тем же имя в своем собственном манифесте пакета. |
| enableLockFile | Булева функция | Включает файл блокировки для обеспечения детерминированного разрешения зависимостей. По умолчанию это значение true. Дополнительные сведения см. в Использование файлов блокировки. |
| resolutionStrategy | Струна | Модернизация косвенные зависимости основанных на правилах Семантики Версий. Это установлено на lowest Дополнительные сведения см. в разделе Разработка стратегии урегулирования ниже. |
| scopedRegistries | Массив объектов | Укажите настраиваемые реестры в дополнение к реестру по умолчанию. Это позволяет размещать собственные пакеты. Дополнительные сведения см. в разделе Реестры сферы охвата. |
| проверяемые | Массив строк | Перечисляет имена пакетов, тесты которых вы хотите загрузить в Unity Рамки тестированияДополнительную информацию см. Добавление тестов в пакет. Примечание: Вам не нужно указывать встроенный пакеты здесь, потому что Unity Test Framework предполагает, что они проверяются по умолчанию. |
| pinnedPackages | Массив строк | Перечисляет имена пакетов, которые вы хотите заблокировать на версии, указанной в объекте dependencies. Элементы в этом списке должны существовать в объекте dependencies, в противном случае возникает ошибка.Добавление имен пакетов в этот список заставляет Package Manager использовать точно такую же версию пакета, какая указана в объекте dependencies, даже если другая версия пакета более совместима с вашей версией Unity Editor. |
Пример
{
"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:<path>/my_package_folder",
"com.unity.my-local-tarball": "file:<path>/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" ],
"pinnedPackages": ["com.unity.package-1"]
}
Разработка стратегии урегулирования
Хотя вы можете заставить разрешение зависимостей пакета Unity использовать более высокие версии косвенных зависимостей, явно добавив их в манифест проекта, это не хорошая стратегия по двум причинам:
- Это возлагает большую ответственность на владельца проекта по поддержанию версий зависимостей.
- Со временем могут возникнуть зависимости, которые не требуются для проекта.
Лучшим подходом является настройка того, как Package Manager выбирает косвенные зависимости на основе правил Семантики Версирования, установив свойство resolutionStrategy:
| Значение: | Описание: |
|---|---|
| самый низкий | Не обновляет косвенные зависимости. Вместо этого использует точно запрашиваемую версию. Это режим по умолчанию. |
| 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).Примечание: Версия 1.0.0 обозначает первую стабильную, готовую к выпуску версию. Ниже этой версии версии 0.X.Y указывают, что их API еще не стабильна, и последующие незначительные версии могут внести изменения, которые могут нарушить работу. Эта часть спецификации SemVer позволяет выпускать ранние версии пакета, не препятствуя быстрой разработке. Из-за этого, когда целевая версия 0.X.Y, highestMinor ведет себя как highestPatch, чтобы обеспечить выбор обратно совместимой версии. Например, с запрошенной версией 0.1.3, эта стратегия выбирает самую высокую версию в диапазоне [0.1.3,0.2.0). |
| самый высокий | Обновление до самой высокой версии. Например, при запросе версии 1.2.3 эта стратегия выбирает самую высокую версию в диапазоне [1.2.3,) (то есть >= 1.2.3 без верхнего предела) |
Примечание: Эти диапазоны никогда не позволяют зависимости перепрыгнуть из стабильного выпуска в экспериментальный или предварительный выпуск пакет.