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 — маркерний трекінг
  • 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
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714