Unity 6.3
0 онлайн 104 гостей 3 в системе
Вход
Пакеты и управление пакетами Шаг 280 из 281

Package Manager устранение неполадок

В настоящем разделе содержится информация по следующим вопросам:

Тип ошибки: Сообщение об ошибке
Общие вопросы запуска - Сообщения об ошибках в окне Package Manager
- Package Manager отсутствует или окно не открывается
- Проблемы после обновления Unity до новой версии
Проблемы с установкой пакетов - Не удалось установить пакет
- Не удалось добавить пакет из Git URL
- Недостаточно места на диске
Проблемы с подписью пакета - Unity не может проверить этот пакет, потому что ему не хватает подписи
- Версия пакета не имеет действительной подписи
Проблемы с установкой зависимостей git - Исполняемый файл ‘git’ не найден
- git-lfs: команда не найдена
- Git LFS ошибки
- Репозиторий не найден
- Не удалось прочитать Имя пользователя: отключены команды терминала
- Не удается обновить версию Git
Пакеты ассетов из Asset Store (Мои ассеты) - «Не удалось проанализировать ответ http» в контексте Мои активы
Реестры с определенной сферой охвата - Отсутствие «Мои реестры» в окне Package Manager
Вопросы сборки - Отсутствующие ошибки MonoBehaviour
- Исправление ошибок сборки из-за устаревших APIs

Вы также можете запустить Unity Package Manager Диагностика если у вас возникают проблемы, которые могут быть связаны с сетью. Дополнительные сведения см. в Диагностика сетевых проблем.


Сообщения об ошибках в окне Package Manager

Package Manager отображает индикаторы ошибок в окне Package Manager, когда возникают проблемы.

Общесистемные вопросы

  • Проблемы с сетевым подключением

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

    Сообщение об ошибке сети
    Сообщение об ошибке сети
  • Ошибка обновления ассетов (или Ошибка обновления пакетов)

    Если ваша сеть не может достичь сервера реестра пакетов, это, вероятно, из-за проблемы с подключением к сети. Когда вы или ваш системный администратор диагностируете и исправляете сетевую ошибку, строка статуса очищается.

    Если ваше сетевое подключение работает, но вы не вошли в свою учетную запись Unity, Package Manager не отображает никаких пакетов Asset Store. При попытке использовать контекст Мои активы, Package Manager предлагает вам войти в систему:

    Вышел из учетной записи Unity
    Вышел из учетной записи 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",
    
  • Проверьте, использует ли манифест проекта &quot; исключить &quot; как версии пакета. Это устаревшее значение зависимости свойство. Если вы обнаружите какие-либо строки, подобные этим, удалите всю строку. 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 на GitHub (A) и GitLab (B)

Нажмите кнопку справа от 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 агента:

  1. Убедитесь, что OpenSSH Клиент установлен. Чтобы это сделать, найдите его в каталоге Windows Настройки Дополнительные функции окно (Начало > Настройки, затем поиск “Дополнительные функции”. Это относится к Windows 10+.

  2. Проверьте свою переменную среды %PATH%, чтобы убедиться, что встроенное местоположение Windows OpenSSH отображается (например, C:\WINDOWS\System32\OpenSSH\).

    Примечание: Если вы уже используете Git для Windows, убедитесь, что встроенный Windows OpenSSH местоположение появляется перед Git для Windows SSH местоположение в вашем %PATH% переменная. Это обеспечивает, что Windows использует встроенный Windows OpenSSH агент через Git для Windows SSH агент.

  3. В терминале 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
    
  4. Импортируйте свой ключ в 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
    
  5. Если вы установили 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.AsyncHTTPClient![:D](https://forum.unity.com/styles/default/xenforo/clear.png)one(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 или методах могут нарушить сборку. Варианты устранения неполадок в порядке предпочтения включают:

  1. Обновите свой код, чтобы прекратить использование устаревшего API.

  2. Отключить предупреждения как ошибки для вашего проекта или сборки C#. Поведение предупреждения как ошибки настраивается вне Unity Editor. Обычно оно контролируется C# настройки компилятора, но также может быть применено из общих файлов сборки, IDE или конфигурации проекта, или файлов конфигурации анализатора. Общий рабочий процесс для отключения этого поведения выглядит следующим образом:
    1. Временно удалить или отключить флаг, который рассматривает предупреждения как ошибки.
    2. Измените код, чтобы использовать новый API.
    3. Сбросьте флажок, чтобы рассматривать предупреждения как ошибки.
  3. Временно подавьте предупреждение, обернув код, использующий API в #pragma директивы предупреждения.

  4. Отключить предупреждения CS0612 (устаревшие) и CS0618 (устаревшие с сообщением).

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