6.0 KiB
NuGet for Unity
Зачем это нужно
NuGet for Unity добавляет в Unity Editor клиент NuGet, чтобы можно было подтягивать обычные .NET-библиотеки прямо в Unity-проект.
Для этого проекта он нужен как вспомогательный канал только для тех зависимостей, которые:
- действительно распространяются через
nuget.org - совместимы с Unity и
netstandard2.0 - не завязаны на Unity-специфичный импорт через
unitypackage,UPM, setup tool или Asset Store
Актуальность и канал установки
По официальному репозиторию NuGet for Unity актуальный release на момент проверки: v4.5.0 от 2025-07-19.
Официально поддерживаются два канала установки:
OpenUPMgit URLчерез Unity Package Manager
Для текущего проекта предпочтителен именно git URL, потому что он уже используется в Packages/manifest.json и не требует отдельной настройки scoped registry.
Рекомендуемый фиксированный URL для документации:
https://github.com/GlitchEnzo/NuGetForUnity.git?path=/src/NuGetForUnity#v4.5.0
Важно:
- сейчас в проекте пакет подключен через
git URL, но без фиксации тега - это удобно для быстрого старта, но менее предсказуемо, чем закрепление на конкретной версии
Текущее состояние в проекте
В репозитории уже есть рабочая конфигурация:
Packages/manifest.jsonподключаетcom.github-glitchenzo.nugetforunityAssets/NuGet.configиспользует толькоhttps://api.nuget.org/v3/index.jsonAssets/NuGet.configвключаетslimRestore=trueAssets/NuGet.configвключаетPreferNetStandardOverNetFramework=trueAssets/packages.configиспользуется как основной список NuGet-зависимостей
На момент проверки Assets/packages.config пустой, то есть NuGet for Unity уже установлен, но внешние NuGet-пакеты через него пока не зафиксированы.
Когда использовать в этом проекте
Перед установкой любой зависимости вне Unity Registry сначала сравни два канала:
- официальный источник пакета
- пакет на
nuget.org
Дальше выбирай канал по правилу:
- если официальный источник для Unity предлагает
UPM,unitypackage, setup tool или Asset Store, сначала используй его NuGet for Unityприменяй только тогда, когда NuGet-пакет не является урезанной .NET-версией и не отстаёт от основного источника
Практический вывод по текущим гайдам проекта:
UniTask: не ставить черезNuGet for Unityдля Unity-клиента, даже при совпадении версии; для Unity нуженUPM, а NuGet-вариант у автора позиционируется как.NET CoresubsetZenject/Extenject: не использоватьNuGet for Unityкак основной канал; официального поддерживаемого Unity-NuGet-канала нетDOTween: не использоватьNuGet for Unity; NuGet-пакеты сильно устарели по сравнению с официальным дистрибутивом
Как использовать после установки
- Открой
NuGet > Manage NuGet Packages. - Найди нужный пакет на
nuget.org. - Перед установкой проверь официальный источник пакета и сравни версии.
- Установи конкретную версию, а не абстрактно "latest", если пакет пойдёт в production.
- Убедись, что запись появилась в
Assets/packages.config. - Проверь, не появились ли конфликты DLL,
asmdefили API compatibility.
Минимальные правила для команды
- Не использовать
NuGet for Unityкак заменуUPMдля всех внешних пакетов подряд. - После добавления каждого NuGet-пакета фиксировать в профильном гайде:
- официальный источник
- версия в официальном источнике
- версия на
nuget.org - выбранный канал установки
- Если пакет добавляет editor tooling, меню, ассеты или Unity-специфичные integration modules, почти всегда нужен не NuGet, а официальный Unity-канал.
Как проверить, что всё настроено
- в Unity есть меню
NuGet - окно
Manage NuGet Packagesоткрывается без ошибок - поиск по
nuget.orgработает - после установки пакета обновляется
Assets/packages.config - проект продолжает компилироваться без конфликтов сборок