Unity AR Foundation: кроссплатформенное AR-приложение под ключ

Мы не раз сталкивались с проектами, где разработчики пытались встроить AR в приложение через прямую интеграцию [ARKit](https://en.wikipedia.org/wiki/ARKit) и [ARCore](https://en.wikipedia.org/wiki/ARCore), а в итоге получали код, который работал только на половине устройств. AR Foundation — кросс-пл

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Unity AR Foundation: кроссплатформенное AR-приложение под ключ
Сложный
~5 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Мы не раз сталкивались с проектами, где разработчики пытались встроить AR в приложение через прямую интеграцию ARKit и ARCore, а в итоге получали код, который работал только на половине устройств. AR Foundation — кросс-платформенная абстракция Unity поверх ARKit и ARCore. Один код, два билда. Но это не значит, что функциональность идентична: LiDAR-окклюзия работает только на iOS Pro-устройствах, Depth API по ML-модели — Android-эксклюзив на чипах без ToF. Писать AR Foundation без понимания этих различий — получать runtime exceptions на половине устройств. Наш опыт показывает: проверка возможностей через descriptor и fallback-механизмы спасают от 90% крашей. Мы предлагаем комплексное решение — от аудита до публикации — с гарантией качества и поддержкой на всех этапах. Свяжитесь с нами для консультации по вашему проекту.

Как AR Foundation решает проблему кроссплатформенности?

AR Foundation версии 6.x (последняя LTS-версия Unity) покрывает все ключевые фичи обеих платформ: plane detection, image tracking, face tracking, mesh classification, point clouds. Но реализация под капотом разная, и некоторые флаги работают только если поддерживает платформенный бэкенд. Ниже — типичный проверочный код:

[SerializeField] AROcclusionManager occlusionManager; void Start() { if (occlusionManager.descriptor?.supportsEnvironmentDepthImage == true) { occlusionManager.requestedEnvironmentDepthMode = EnvironmentDepthMode.Fastest; occlusionManager.requestedOcclusionPreferenceMode = OcclusionPreferenceMode.PreferEnvironmentOcclusion; } else { occlusionManager.enabled = false; } } 

Без проверки descriptorNotSupportedException на Pixel 5, у которого нет ToF. Наши инженеры всегда включают такие проверки.

Почему архитектура сцены критична для стабильности?

AR Foundation строится на компонентах, привязанных к ARSession и XROrigin:

  • ARPlaneManager — обнаружение и трекинг плоскостей
  • ARRaycastManager — стрельба лучами по tracked geometry
  • ARTrackedImageManager — маркерный tracking
  • ARAnchorManager — управление anchor lifecycle

Правильное размещение объекта по тапу через ARRaycastManager:

[SerializeField] ARRaycastManager raycastManager; [SerializeField] ARAnchorManager anchorManager; [SerializeField] GameObject prefabToPlace; private List<ARRaycastHit> hits = new List<ARRaycastHit>(); void Update() { if (Input.touchCount == 0) return; var touch = Input.GetTouch(0); if (touch.phase != TouchPhase.Began) return; if (raycastManager.Raycast(touch.position, hits, TrackableType.PlaneWithinPolygon)) { var hitPose = hits[0].pose; var anchor = anchorManager.AttachAnchor( hits[0].trackable as ARPlane, hitPose ); Instantiate(prefabToPlace, anchor.transform); } } 

AttachAnchor привязывает объект к конкретной плоскости — если плоскость обновит свою геометрию (ARKit постоянно уточняет форму), объект останется на ней. Без привязки к anchor объект дрейфует.

Image Tracking: референсная библиотека

Изображения компилируются в XRReferenceImageLibrary через Unity Editor. Ограничения: ARKit допускает до 100 изображений в библиотеке с одновременным трекингом до 4. ARCore — практически без ограничений по числу, но одновременно тоже до 20 штук максимум.

[SerializeField] ARTrackedImageManager trackedImageManager; void OnEnable() => trackedImageManager.trackablesChanged.AddListener(OnImageChanged); void OnDisable() => trackedImageManager.trackablesChanged.RemoveListener(OnImageChanged); void OnImageChanged(ARTrackablesChangedEventArgs<ARTrackedImage> args) { foreach (var added in args.added) { SpawnContent(added.referenceImage.name, added.transform); } foreach (var updated in args.updated) { SetVisible(updated.referenceImage.name, updated.trackingState == TrackingState.Tracking); } } 

Производительность: Unity + AR = осторожно

Unity не самая лёгкая среда для AR. Типичные проблемы:

Garbage collector паузы. GC в .NET/Mono останавливает мейн-треад. При 60 FPS AR-сессии пауза в 16ms — это пропущенный кадр и дёргание объектов. Решение: использовать List<T> с предварительно выделенной ёмкостью (передавать в Raycast), избегать new внутри Update().

DrawCall overhead. Каждый AR-объект без batching — отдельный drawcall. GPU Instancing в материале + Static batching там где объекты не двигаются. На Android — Vulkan backend вместо OpenGLES для меньшего CPU overhead.

Texture Compression. ASTC для iOS и ETC2 для Android. В AR Foundation проект под оба таргета — настраивать Override for platform в Texture Import Settings. ASTC на Android требует GPU поддержки (есть на всех ARCore-совместимых).

Проблема Решение
GC паузы Pre-allocated List, избегать new в Update
DrawCall overhead GPU Instancing, Static batching, Vulkan на Android
Texture Compression ASTC для iOS, ETC2 для Android, Override for platform

Сборка и публикация

AR Foundation требует отдельных настроек в Player Settings:

  • iOS: Camera Usage Description обязателен (требует App Store), ARKit capability
  • Android: CAMERA permission в AndroidManifest, com.google.ar.core в dependencies

ARCore проверяет наличие AR Services при запуске — нужна обработка ARUnavailableException. Без неё — молчаливый краш на несовместимых устройствах.

Что входит в работу

При заказе интеграции AR Foundation под ключ вы получаете:

  • Анализ требований и выбор стека (Unity LTS, AR Foundation 6.x, StoreKit 2 / Billing 6 для покупок)
  • Реализация с проверкой возможностей устройств и fallback-логикой
  • Оптимизация производительности (GC, batching, текстуры)
  • Настройка сборки и публикации (App Store Connect / Google Play Console)
  • Документация по API и конфигурации
  • Обучение команды и поддержка в течение 2 недель после релиза

Наша команда — сертифицированные Unity-разработчики с 10+ лет опыта и более 50 реализованных AR-проектов. Получите консультацию по вашему проекту — напишите нам.

Сроки

Базовая интеграция AR Foundation с plane detection и размещением объектов (iOS + Android): от 5 дней. Маркерный AR с библиотекой изображений и кастомными анимациями: 1–2 недели. Полное решение с окклюзией, face tracking и публикацией в обе платформы: 3–6 недель.

Как избежать типичных ошибок при интеграции AR Foundation?

  • Не проверяли descriptor — краш на устройствах без ToF.
  • Залили ASTC-текстуры на Android без поддержки — чёрные текстуры.
  • Использовали new внутри Update — микрофризы каждые 10-20 секунд.
  • Не обработали ARUnavailableException — молчаливый вылет на старых Android.
  • Не указали Camera Usage Description — App Store rejected.

Сравнение AR Foundation с другими подходами

Подход Время разработки (iOS + Android) Кодовая база Производительность
Прямая интеграция ARKit + ARCore 2-3 недели 2 кодовые базы Максимальная
AR Foundation 5-14 дней Единый C# 95-98% от нативной
Vuforia 7-10 дней Единый C# + лицензия 80-90%

AR Foundation лучше прямой интеграции тем, что снижает время разработки примерно на 40-50% при минимальной потере производительности. Свяжитесь с нами для расчета стоимости интеграции — оценим задачу и предложим решение.