# 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`. Официально поддерживаются два канала установки: - `OpenUPM` - `git URL` через Unity Package Manager Для текущего проекта предпочтителен именно `git URL`, потому что он уже используется в `Packages/manifest.json` и не требует отдельной настройки scoped registry. Рекомендуемый фиксированный URL для документации: ```text https://github.com/GlitchEnzo/NuGetForUnity.git?path=/src/NuGetForUnity#v4.5.0 ``` Важно: - сейчас в проекте пакет подключен через `git URL`, но без фиксации тега - это удобно для быстрого старта, но менее предсказуемо, чем закрепление на конкретной версии ## Текущее состояние в проекте В репозитории уже есть рабочая конфигурация: - `Packages/manifest.json` подключает `com.github-glitchenzo.nugetforunity` - `Assets/NuGet.config` использует только `https://api.nuget.org/v3/index.json` - `Assets/NuGet.config` включает `slimRestore=true` - `Assets/NuGet.config` включает `PreferNetStandardOverNetFramework=true` - `Assets/packages.config` используется как основной список NuGet-зависимостей На момент проверки `Assets/packages.config` пустой, то есть `NuGet for Unity` уже установлен, но внешние NuGet-пакеты через него пока не зафиксированы. ## Когда использовать в этом проекте Перед установкой любой зависимости вне Unity Registry сначала сравни два канала: 1. официальный источник пакета 2. пакет на `nuget.org` Дальше выбирай канал по правилу: - если официальный источник для Unity предлагает `UPM`, `unitypackage`, setup tool или Asset Store, сначала используй его - `NuGet for Unity` применяй только тогда, когда NuGet-пакет не является урезанной .NET-версией и не отстаёт от основного источника Практический вывод по текущим гайдам проекта: - `UniTask`: не ставить через `NuGet for Unity` для Unity-клиента, даже при совпадении версии; для Unity нужен `UPM`, а NuGet-вариант у автора позиционируется как `.NET Core` subset - `Zenject/Extenject`: не использовать `NuGet for Unity` как основной канал; официального поддерживаемого Unity-NuGet-канала нет - `DOTween`: не использовать `NuGet for Unity`; NuGet-пакеты сильно устарели по сравнению с официальным дистрибутивом ## Как использовать после установки 1. Открой `NuGet > Manage NuGet Packages`. 2. Найди нужный пакет на `nuget.org`. 3. Перед установкой проверь официальный источник пакета и сравни версии. 4. Установи конкретную версию, а не абстрактно "latest", если пакет пойдёт в production. 5. Убедись, что запись появилась в `Assets/packages.config`. 6. Проверь, не появились ли конфликты 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` - проект продолжает компилироваться без конфликтов сборок ## Официальные источники - https://github.com/GlitchEnzo/NuGetForUnity - https://github.com/GlitchEnzo/NuGetForUnity/releases