96 lines
6.0 KiB
Markdown
96 lines
6.0 KiB
Markdown
# 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
|