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

Разработка AR-приложения, которое работает на всех устройствах, — непростая задача: различия между ARKit и ARCore часто приводят к сбоям на половине смартфонов. Мы создаём кроссплатформенные AR-решения на Unity с использованием AR Foundation, обеспечивая корректную работу и на iOS, и на Android. Наша команда реализует проект под ключ — от аудита до публикации, с последующей поддержкой и стабильностью.

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

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

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

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

Мы не раз сталкивались с проектами, где разработчики пытались встроить 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;
    }
}

Без проверки descriptor — NotSupportedException на 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% при минимальной потере производительности. Свяжитесь с нами для расчета стоимости интеграции — оценим задачу и предложим решение.

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

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

  • Разработка мобильного приложения для компании FEEDME
    Разработка мобильного приложения для компании FEEDME
    1009
  • Разработка мобильного приложения для компании XOOMER
    Разработка мобильного приложения для компании XOOMER
    902
  • Разработка мобильного приложения для компании RHL
    Разработка мобильного приложения для компании RHL
    1332
  • Разработка мобильного приложения для компании ZIPPY
    Разработка мобильного приложения для компании ZIPPY
    1180
  • Разработка мобильного приложения для компании Affhome
    Разработка мобильного приложения для компании Affhome
    1106
  • Разработка мобильного приложения для компании FLAVORS
    Разработка мобильного приложения для компании FLAVORS
    714