Package Manager устранение неполадок
В настоящем разделе содержится информация по следующим вопросам:
Вы также можете запустить Unity Package Manager Диагностика если у вас возникают проблемы, которые могут быть связаны с сетью. Дополнительные сведения см. в Диагностика сетевых проблем.
Сообщения об ошибках в окне Package Manager
Package Manager отображает индикаторы ошибок в окне Package Manager, когда возникают проблемы.
Общесистемные вопросы
-
Проблемы с сетевым подключением
Сообщения об ошибках появляются в строка статуса когда Package Manager обнаружил проблему, которая не связана с конкретным пакетом. Например, если Package Manager не может получить доступ к сервер реестра пакетов, в строке состояния отображается следующее сообщение:
Сообщение об ошибке сети -
Ошибка обновления ассетов (или Ошибка обновления пакетов)
Если ваша сеть не может достичь сервера реестра пакетов, это, вероятно, из-за проблемы с подключением к сети. Когда вы или ваш системный администратор диагностируете и исправляете сетевую ошибку, строка статуса очищается.
Если ваше сетевое подключение работает, но вы не вошли в свою учетную запись Unity, Package Manager не отображает никаких пакетов Asset Store. При попытке использовать контекст Мои активы, Package Manager предлагает вам войти в систему:
Вышел из учетной записи Unity Нажмите Войти кнопка внутри панель списка чтобы войти в свой Unity счета через Unity Hub.
Конкретные вопросы пакета
-
Если при загрузке или установке конкретного пакета возникли проблемы (например, при определении версий пакета для загрузки), значок ошибки (
) приводится в панель списка рядом с компрометированным пакетом (A). Чтобы выяснить, в чем проблема, проверьте скомпрометированный пакет панель деталей для просмотра подробного сообщения об ошибке (B):
Сообщение об ошибке зависимости
Package Manager отсутствует или окно не открывается
Окно Package Manager может быть перемещено за пределы экрана или скрыто другим окном. Когда это происходит, окно Package Manager не открывается. В этом случае вы можете попытаться восстановить расположение окна (Окно > Расположения > По умолчанию) и заново открыть окно Package Manager.
Если окно Package Manager все еще не появляется, проверьте окно консоли Unity:
Failed to resolve packages: The file [<project-path>/Packages/manifest.json] is not valid JSON:
Unexpected token '}' at 44:1
}
Это сообщение об ошибке указывает на неправильно сформированный файл manifest.json. Оно также сообщает вам номер строки, в которой Package Manager не смог проанализировать файл, чтобы вы могли исправить JSON.. Существует несколько онлайновых проверок, которые вы можете использовать, чтобы попытаться исправить проблему. После сохранения исправленного файла, Unity перезагружает окно Package Manager.
Если вы обновили с более ранней версии Unity Editor, могут возникнуть другие проблемы с файлом манифеста пакета:
-
Начиная с 2019.3, ваш файл
manifest.jsonне должен содержать никаких ссылок на пакеты com.unity.package-manager-ui. Удалите следующую строку из списка зависимостей манифеста:"com.unity.package-manager-ui": "2.1.1", Проверьте, использует ли манифест проекта " исключить " как версии пакета. Это устаревшее значение зависимости свойство. Если вы обнаружите какие-либо строки, подобные этим, удалите всю строку. Package Manager устанавливает только пакеты, которые явно включены в качестве зависимости в вашем проекте, так что после удаления этой записи, Package Manager игнорирует пакет и не устанавливает его
Проблемы после обновления Unity до новой версии
При обновлении проекта до более новой версии Unity версии, Package Manager автоматически обновляет несовместимые пакеты до более новых совместимых версий. Однако, если ваш пакет не компилируется, Package Manager отображает сообщения об ошибках в Консоль окно.
Чтобы исправить эти сообщения, прочитайте сообщения об ошибках и исправьте любые проблемы, которые вы можете. Например, пакет может не иметь зависимости от другого пакета или версии. В этом случае вы можете попробовать установить пакет самостоятельно.
Вы также можете попробовать следующую последовательность решений, пока не найдете что-то, что работает:
- Создайте резервную копию и удалите папку
Packagesв вашем проекте. - Создайте резервную копию и удалите источники пакетов в папке
Packagesвашего проекта, оставив только файлmanifest.json. Затем попробуйте перезагрузить проект.
Установка пакета не удалась
Если вы пытаетесь установить новый пакет из реестра и он не работает, это может быть из-за проблем с разрешениями.
Вы должны иметь полные права на папка кэша:
- Windows (пользовательская учетная запись):
%LOCALAPPDATA%\Unity\cache\upm - Windows (системный аккаунт):
%ALLUSERSPROFILE%\Unity\cache\upm - macOS:
$HOME/Library/Caches/Unity/upm - Linux:
$HOME/.cache/Unity/upm
Это может быть проблема с сетью. Проверьте настройки брандмауэра и прокси.
Иногда в организациях — школах, государственных учреждениях или защищённых сетях предприятий — настраивают прокси-серверы для контроля трафика между сетью и интернетом и используют собственные сертификаты, которые Unity и Package Manager не распознают. Обратитесь к своему сетевому администратору.
Не удается добавить пакет из Git URL
См. Хранилище не найдено.
Недостаточное пространство на диске
Если на установочном диске не хватает места или его мало, рассмотрите следующие решения:
- Изменить местоположение глобального кэша. См. Настройка глобального кэша.
- Изменить расположение кэша пакета ассетов. См. Настройка расположения кэша пакета активов.
- Уменьшите максимальный размер кэш-памяти данных реестра. См. Настройка глобального кэша.
Unity не может проверить этот пакет, так как у него нет подписи
Начиная с Unity 6.3, Package Manager проверяет каждый пакет на наличие подписи. Сигнатуры пакетов облегчают разработчикам и пользователям подтверждение источника и целостности пакетов, а также обнаружение любых несанкционированных изменений или подделки во время распространения.
Если вы получаете это сообщение, попробуйте следующие решения:
- Используйте подписанную версию пакета. Если вы не можете найти подписанную версию, свяжитесь с владельцем пакета и спросите, может ли он опубликовать подписанную версию.
- Если пакет принадлежит вам, подпишите его со ссылкой на Export и подпишите пакет UPM.
Версия пакета не имеет действительную подпись
Важно
Все сборки 6.3 до 6000.3.5f2 имеют известную проблему, когда Package Manager может сообщать о недействительных пакетах, даже если они имеют действительную подпись пакета.
Эта проблема исправлена в 6000.3.5f2 и более поздних версиях. Обновление на одну из этих сборок для решения проблемы.
Информацию об этой проблеме в других версиях Unity Editor см. в Unity Обсуждения.
Дополнительную информацию о подписях пакетов см. в Подписи пакетов.
Пакет был изменен после его подписания, что может свидетельствовать о подделке.
Пакеты имеют подпись, чтобы убедиться, что содержимое не было изменено до или во время передачи. Недействительная подпись обычно возникает в следующих ситуациях:
- Кто-то опубликовал пакет с изменениями в своем реестре.
- Во время передачи файла конечному пользователю произошла ошибка.
В обоих случаях Package Manager считает пакет потенциально вредоносным.
При получении недействительной подписи на пакете из официального канала, например из реестра Unity или Asset Store, выполните одно из следующих действий:
- Установите другую версию пакета.
- Загрузите пакет снова с официального канала.
Если вы делитесь пакетом Unity, в котором есть исправление, рассмотрите возможность использования Git URL или встраивания пакета в свой проект.
Исполняемый файл 'git' не найден
Если вы попытаетесь установить пакет из git URL, появится сообщение, похожее на следующее:
Cannot perform upm operation: Unable to add package
[https://github.example.com/myuser/myrepository.git]:
No 'git' executable was found. Please install Git on your system and restart Unity [NotFound]
UnityEditor.EditorApplication:Internal_CallUpdateFunctions()
git-lfs: команда не найдена
Если вы пытаетесь загрузить пакет, использующий Git LFS (Large File Storage), вы можете получить следующее сообщение об ошибке:
Error when executing git command. git-lfs filter-process: command not found.
Это означает, что Git LFS, возможно, не установлен на вашем компьютере. Чтобы убедиться, проверьте его в командной строке:
git lfs --version
Git LFS установлен, если команда возвращает что-то вроде этого:
git-lfs/2.8.0 (GitHub; darwin amd64; go 1.12.7)
В противном случае, вы можете установить его, следуя инструкциям Bitbucket GitHub.
Ошибки Git LFS
Package Manager поддерживает установку пакетов из хранилищ, которые используют Git Large File Storage (LFS). Unity изначально пытается выполнить поверхностные клоны для повышения производительности, но автоматически возвращается к полным клонам хранилища, когда Git LFS требует этого, например, при получении необъявленных объектов.
Если операция загрузки извлекает файл указателя замены вместо фактического содержимого файла, наиболее вероятным виновником может быть расположение файла .gitattributes. Unity поддерживает два расположения для файла .gitattributes, корень хранилища и корень каталога пакетов. Чтобы уменьшить риск возникновения проблем:
- Убедитесь, что ваш файл
.gitattributesправильно настроен, чтобы гарантировать отслеживание только предназначенных файлов с LFS. - Избегайте размещения основного кода пакета или ассетов под LFS Если вы должны хранить большие ассеты с LFS, держать их за пределами Unity пакета (например, в отдельном хранилище) и импортировать их в Unity с использованием другого метода (например, AssetBundles или специальное хранилище ассетов).
Хранилище не найдено
Если Package Manager не может найти хранилище, которое вы указали, Unity Консоль отображается сообщение об ошибке:
Cannot perform upm operation: Unable to add package [https://mycompany.github.com/gitproject/com.mycompany.mypackage.git]:
Error when executing git command. fatal: repository 'https://mycompany.github.com/gitproject/com.mycompany.mypackage.git/' not found
[NotFound]
UnityEditor.EditorApplication:Internal_CallUpdateFunctions() (at /Users/builduser/buildslave/unity/build/Editor/Mono/EditorApplication.cs:310)
Чтобы убедиться, что вы используете правильный URL, перейдите на страницу хранилища и скопируйте URL из кнопки Клонировать:
Нажмите кнопку справа от URL на GitHub (A) или GitLab (B), чтобы скопировать URL в буфер обмена.
Если местоположение хранилища правильно, то может быть другая проблема с URL:
- Если вы направляетесь на определенную ревизию, убедитесь, что ваша ревизия находится последней. Например:
https://github.example.com/myuser/myrepository1.git#revision - Если вы нацеливаетесь на ревизию и пакет не находится в корне, убедитесь, что параметр запроса
pathпредшествует якору ревизии. Например:https://github.example.com/myuser/myrepository.git?path=/example/folder#v1.2.3
Если местоположение хранилища и URL указаны правильно, проверьте вашу системную переменную окружающей среды PATH. Убедитесь, что переменная PATH включает записи для каталога Git cmd (Windows) и каталога Git bin (Windows, macOS). Процессы Package Manager требуют эти записи в переменной PATH.
Не удалось прочитать имя пользователя: команды терминала отключены
Если вы пытаетесь установить пакет из закрытого репозитория, требующего аутентификации, в Console Unity появляется примерно такое сообщение:
Cannot perform upm operation: Unable to add package [https://mycompany.github.com/gitproject/com.mycompany.mypackage.git]:
Error when executing git command. fatal: could not read Username for 'https://mycompany.github.com': terminal prompts disabled
[NotFound]
UnityEditor.EditorApplication:Internal_CallUpdateFunctions() (at /Users/builduser/buildslave/unity/build/Editor/Mono/EditorApplication.cs:310)
Обычно это сообщение появляется потому, что Package Manager не предоставляет интерактивный терминал или диалог, где вы можете ввести имя пользователя и пароль для HTTP, или пароль для разблокировки вашего ключа SSH:
-
С HTTP(S)каждый раз, когда вы входите в Bitbucket, GitHub или GitLab, вам нужно вводить имя пользователя и пароль в терминал или диалог. Однако Package Manager не предоставляет интерактивный терминал или диалог, где вы можете ввести имя пользователя и пароль для HTTP(S).
Чтобы обойти эту проблему, используйте одно из решений, предложенных в Решения для HTTPS.
-
SSH использует пару из открытого и закрытого ключей SSH. Свой открытый ключ SSH можно добавить в Bitbucket, GitHub, или GitLab а затем получить доступ к хранилищам без необходимости ввода имени пользователя и пароля.
Однако, если вы настроили пароль для защиты вашего ключа SSH, вам все равно придется вводить этот пароль в терминале или диалоге для авторизации вашего ключа. В этом случае вы можете использовать агента SSH, который может разблокировать ваш ключ SSH для аутентификации с помощью Package Manager от вашего имени.
Решения для HTTPS
Package Manager не предоставляет интерактивный терминал или диалог, где вы можете ввести ваше HTTP(S) имя пользователя и пароль. Чтобы обойти это, используйте один из следующих способов:
- Следуйте инструкциям на Использование приватных репозиториев с HTTPS-адресами Git и Использование защищённых парольной фразой SSH-ключей с SSH-адресами Git.
- Использование диспетчера учетных данных (Менеджер учетных данных Git Windows или OSXKeyChainДиспетчер учетных данных обрабатывает отправку пароля без необходимости использования терминала или командной строки.
- Используйте git-credentials из терминала или командной строки, затем запустите Hub из того же терминала, чтобы Unity имел доступ к кэшированным или сохраненным учетным данным.
- Использование SSH Если вы настроили свой компьютер на использование SSH ключ без пароля, Package Manager если вы решили использовать пароль для повышения безопасности, вы можете использовать пароль, который вы создали в процессе создания файла. ssh-агент на любой macOS или Windows для обхода проблемы аутентификации.
Решения для SSH
Если вы используете протокол SSH для установка пакета Git URL, вы можете получить ошибку аутентификации от Git. Обычно это происходит, когда на вашем компьютере настроен закрытый ключ SSH, защищённый парольной фразой.
Решением этой проблемы является настройка агента SSH, который может разблокировать ваш ключ SSH для аутентификации с помощью Package Manager от вашего имени. Следуйте инструкциям в разделе, соответствующем вашей операционной системе:
Настройка OpenSSH для Windows
Встроенная версия Windows OpenSSH ssh-агента работает лучше, чем версия, доступная по умолчанию с Git для Windows. В этой процедуре объясняется, как настроить клиент OpenSSH и добавить свой ключ к его ssh-агенту. Если вы используете Git для Windows, вы также можете установить приоритет встроенной версии Windows OpenSSH над Git для Windows SSH агента:
Убедитесь, что OpenSSH Клиент установлен. Чтобы это сделать, найдите его в каталоге Windows Настройки Дополнительные функции окно (Начало > Настройки, затем поиск “Дополнительные функции”. Это относится к Windows 10+.
-
Проверьте свою переменную среды
%PATH%, чтобы убедиться, что встроенное местоположение Windows OpenSSH отображается (например,C:\WINDOWS\System32\OpenSSH\).Примечание: Если вы уже используете Git для Windows, убедитесь, что встроенный Windows OpenSSH местоположение появляется перед Git для Windows SSH местоположение в вашем
%PATH%переменная. Это обеспечивает, что Windows использует встроенный Windows OpenSSH агент через Git для Windows SSH агент. -
В терминале PowerShell запустите процесс
ssh-agentи убедитесь, что он запускается автоматически:# Set the ssh-agent service to start automatically and manually start it now Get-Service ssh-agent | Set-Service -StartupType Automatic # Run the ssh-agent process to start the ssh-agent service ssh-agent -
Импортируйте свой ключ в ssh-агент. Для этого запустите
ssh-addв командной строке и следуйте инструкциям. По умолчанию агент добавляет ключ%USERPROFILE%\.ssh\id_rsaи просит вас ввести пароль.# Import the key ssh-addЧтобы использовать другой ключ, вы можете указать его в качестве аргумента:
# Set the ssh-agent service to start automatically and manually start it now ssh-add <your-secure-ssh-key-name>Если вы не можете вспомнить имя вашего ключа, используйте следующую команду для перечисления ваших ключей:
ssh-add -l -
Если вы установили Git для Windows, сбросьте переменную среды
%GIT-SSH%, чтобы Git всегда использовал встроенную версию Windows OpenSSH агента ssh:[Environment]::SetEnvironmentVariable("GIT_SSH", "$((Get-Command ssh).Source)", [System.EnvironmentVariableTarget]::User)
Добавление ключей SSH к вашему агенту SSH для macOS
Используйте команду ssh-add для добавления ваших ключей SSH к ssh-агенту, работающему на вашей системе macOS. Параметр команды, который вы используете, зависит от вашей версии macOS:
-
На macOS 11 и раньше, используйте:
ssh-add -K ~/.ssh/<your-secure-ssh-key-name> -
На macOS 12 и позднее, используйте:
ssh-add --apple-use-keychain ~/.ssh/<your-secure-ssh-key-name>
После выполнения этой команды терминал запросит пароль для разблокировки вашего ключа SSH, а затем добавит его в цепь ключей macOS. Однако после перезагрузки системы все ключи, хранящиеся в ssh-агенте, будут сброшены.
Чтобы убедиться, что вам не нужно повторно вводить пароль после перезагрузки системы, откройте файл ~/.ssh/config (или создайте его, если вы его не нашли) и добавьте следующее:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/<your-secure-ssh-key-name>
Перезапустите компьютер, чтобы применить эти изменения.
Не удается обновить версию Git
Если вы пытаетесь обновить свою зависимость Git до более новой версии из хранилища, но это не работает, это, вероятно, из-за заблокировано Зависимость Git. Если вы хотите обновить свою зависимость Git до более новой версии из хранилища, используйте Добавить пакет из Git URL кнопку и введите Git URL. Более подробную информацию см. Заблокированные зависимости Git.
«Не удалось проанализировать ответ HTTP» в контексте Мои ассеты
Если вы получаете следующее сообщение Консоль окно при попытке загрузки пакета ассетов из каталога Asset Store, возможно, возникла проблема с кэшем пакета ассетов:
[PackageManager] Error Failed to parse response. UnityEditor.AsyncHTTPClientone(State, Int32)
Чтобы решить эту проблему, удалите все загруженные ресурсы из Местоположение загруженных файлов пакетов ресурсов и затем повторите попытку загрузки ресурсов.
Предупреждение: Если в вашем проекте много данных, то может потребоваться много времени и пропускной способности для повторной загрузки всего.
Отсутствие «Мои реестры» в окне Package Manager
Не все поставщики реестров совместимы с Package Manager Unity. Если добавленный сервер реестра пакетов не реализует конечные точки /-/v1/search или /-/all, ваш реестр с заданной областью видимости несовместим с Package Manager Unity и не отображается в разделе My Registries на панели навигации окна Package Manager.
Отсутствие ошибок MonoBehaviour
Во время сборки, если имеется много ошибок, связанных с недостающим поведением, UnityLinker может ошибочно удалять компонент, который, как он считает, не имеет ссылки. Он часто делает это потому, что уровень удаления слишком агрессивен. Например, если у вас есть префаб в AssetBundle, который ссылается на компонент SpriteShape в пакете 2D SpriteShape, объект может отсутствовать и может генерировать предупреждения компилятора.
Чтобы исправить это, вы можете либо снизить уровень удаления для UnityLinker, либо объявить сборки пакета внутри файла link.xml, чтобы предотвратить их удаление:
<linker>
<assembly fullname="Unity.2D.SpriteShape.Runtime" preserve="all"/>
<assembly fullname="Unity.2D.Common.Runtime" preserve="all"/>
</linker>
Дополнительные сведения об уровнях стриптинга и UnityLinker см. в Управляемый стриптинг кода.
Исправить ошибки сборки из-за устаревших APIs
Если ваш проект рассматривает предупреждения как ошибки, предупреждения об устаревших APIs или методах могут нарушить сборку. Варианты устранения неполадок в порядке предпочтения включают:
Обновите свой код, чтобы прекратить использование устаревшего API.
- Отключить предупреждения как ошибки для вашего проекта или сборки C#. Поведение предупреждения как ошибки настраивается вне Unity Editor. Обычно оно контролируется C# настройки компилятора, но также может быть применено из общих файлов сборки, IDE или конфигурации проекта, или файлов конфигурации анализатора. Общий рабочий процесс для отключения этого поведения выглядит следующим образом:
- Временно удалить или отключить флаг, который рассматривает предупреждения как ошибки.
- Измените код, чтобы использовать новый API.
- Сбросьте флажок, чтобы рассматривать предупреждения как ошибки.
Временно подавьте предупреждение, обернув код, использующий API в
#pragmaдирективы предупреждения.Отключить предупреждения
CS0612(устаревшие) иCS0618(устаревшие с сообщением).