Почему Visual Studio не обнаруживает библиотеку Unity.Sentis, если соответствующий плагин уже установлен в проекте и даже успешно конвертировал файл?

Я разрабатываю AR‑приложение на Unity: ИИ распознаёт модель одежды в камере и привязывает соответствующие 3D‑элементы. Нейросеть я обучила с помощью TensorFlow, модель сохранена в формате <code>.onnx</code>, поэтому её нужно конвертировать в формат, удобный для Unity — я выбрала <code>.sentis</code>. Плагин установился, распознал загруженный <code>.onnx</code>-файл и сконвертировал его в <code>.sentis</code>. Однако при написании скрипта загрузки модели Visual Studio не распознаёт библиотеку <code>Unity.Sentis</code>. Я пробовала импортировать библиотеку как <code>Unity.AI.Inference</code> (так называется плагин в новой версии), но и это не сработало. Помогите, пожалуйста, исправить эту ошибку или предложите другой способ интеграции нейросети в проект Unity.
  • 24 апреля 2026 г. 21:01
Ответы на вопрос 2
Кратко — проблема почти всегда не в Visual Studio, а в том, как Unity компилирует пакет/сборку плагина и какие ссылки (assembly references / asmdef / .csproj‑файлы) сгенерированы. Visual Studio берёт подсказки из .csproj, которые генерирует Unity, и если плагин находится в отдельной сборке, не подключённой к вашей сборке кода, то namespace не будет виден в IDE.

Что проверить и как исправить (порядок действий):

1) Правильный namespace
- Откройте папку плагина (Assets/... или Packages/com.unity.sentis) и найдите .cs файлы или .asmdef / .dll. Посмотрите, какие namespace там объявлены (например, Unity.Sentis или Unity.AI.Inference). Используйте именно то имя в using.  
- Если у плагина только нативный код и нет C#-обёртки, то в C# namespace просто нет.

2) Сборки/asmdef (самая частая причина)
- Если в проекте используются Assembly Definition Files (.asmdef), то ваш скрипт и плагин могут находиться в разных сборках. Откройте .asmdef плагина — там указано имя сборки (поле "name").  
- Откройте .asmdef вашей игры/папки со скриптом (если он есть) и в Inspector добавьте ссылку на сборку плагина в поле "Assembly Definition References". После этого Unity пересоберёт и Visual Studio увидит types/namespaces.

3) Генерация .csproj для пакетов
- Unity генерирует .csproj по-разному для пакетов. В Unity: Edit → Preferences → External Tools → в разделе "Generate .csproj files for" поставьте галочки для "Embedded packages", "Local packages", "Registry packages" (включите те, которые нужны). Затем в меню Assets → Open C# Project (или просто закройте/откройте solution) — это пересоздаст проект для Visual Studio.

4) Платформенные ограничения / Editor-only
- Проверьте в .asmdef плагина секцию "Include Platforms" / "Exclude Platforms". Возможно сборка собрана только для Editor или для конкретной платформы, а ваша сборка в другом контексте — тогда namespace может не попадать в проект, открываемый в VS.
- Если плагин помечен как Editor-only, то в сборках, которые используются на рантайме, его не будет.

5) API compatibility / target framework
- Иногда несовместимость уровня API мешает. В Player Settings → Other Settings → Api Compatibility Level попробуйте .NET 4.x (или наоборот), затем пересоберите проект/проекты в Unity.

6) Перезапуск и очистка
- После изменений: Assets → Reimport All (если нужно), перезапустите Unity и Visual Studio. Часто это решает проблему с подсветкой и автокомплитом.

7) Если плагин — закрытый .dll
- Откройте .dll через ILSpy / dotPeek или просто проверьте её имя и namespace. Если namespace другой — используйте его. Если DLL собрана для другой версии .NET/Mono, это может мешать.

Альтернативы интеграции нейросети в Unity (если Sentis не работает или устарел)
- Unity Barracuda — официальная и поддерживаемая inference‑библиотека Unity. Поддерживает ONNX (ограниченно), работает на разных платформах и активно поддерживается. Часто легче и стабильнее, чем устаревшие плагины.
- TensorFlow Lite for Unity — если у вас можно конвертнуть модель в TFLite.
- Собрать собственный native-плагин (C/C++) и вызывать его через P/Invoke, если требуется специфичная runtime.
- Если модель небольшая и inference можно выполнять на сервере — делать inference на сервере и слать результаты в приложение (но это требует сетевого соединения и задержки).

Резюме действий прямо сейчас (быстрый чеклист)
1. В Unity найдите папку плагина и проверьте namespace в его .cs / .dll.  
2. Проверить/добавить ссылки в .asmdef вашей сборки (Assembly Definition References → имя сборки плагина).  
3. Edit → Preferences → External Tools → включить генерацию .csproj для пакетов → Assets → Open C# Project.  
4. Перезапустить Unity/VS, при необходимости изменить Api Compatibility Level.  
5. Если не помогло — покажите структуру папки плагина (Assets/ или Packages/), содержимое .asmdef (если есть) и точный namespace, который вы указываете в using — помогу точечно.

Если хотите, пришлите скрин папки плагина или содержимое .asmdef и пример кода (строку using и ошибку), и я напишу конкретные шаги под ваш случай.
Скорее всего VS просто не пересинхронизировался — зайди в Edit → Preferences → External Tools → Regenerate project files, потом переоткрой .sln. <br/> <br/> Namespace зависит от версии пакета: до 2.2 это <code>using Unity.Sentis;</code> , начиная с 2.2 переименовали в <code>using Unity.InferenceEngine;</code> . <code>Unity.AI.Inference</code> — точно не то, такого namespace нет.
Похожие вопросы