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 — маркерний трекінг
  • 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% при мінімальній втраті продуктивності. Зв'яжіться з нами для розрахунку вартості інтеграції — оцінимо задачу та запропонуємо рішення.