使用 Unity 為 Android XR 開發

本指南概略說明如何使用 Unity 開發 Android XR 應用程式。Android XR 可搭配您熟悉的工具和功能運作,這些工具和功能是您對 Unity 的期望。由於 Unity 的 Android XR 支援功能是建立在 OpenXR 之上,因此 Unity 也支援 OpenXR 總覽中所述的許多功能。

請參閱這份指南,瞭解下列內容:

  • Android XR 的 Unity 支援
    • Unity XR 基礎知識
    • 開發及發布 Android XR 應用程式
    • 適用於 Android XR 的 Unity 套件
      • Unity OpenXR:Android XR 套件
      • Unity 適用的 Android XR 擴充功能
      • 功能和相容性考量
  • 輸入和互動

Unity 支援 Android XR

為 Android XR 建構 Unity 應用程式時,您可以利用 Unity 6 中的混合實境工具和功能。這包括使用 XR 互動工具包AR FoundationOpenXR 外掛程式的混合實境範本,協助您快速上手。使用 Unity 建構 Android XR 應用程式時,建議您使用 Universal Render Pipeline (URP) 做為轉譯管道,並使用 Vulkan 做為繪圖 API。這些功能可讓您充分利用 Unity 的部分新圖形功能,這些功能僅支援 Vulkan。如要進一步瞭解如何設定這些設定,請參閱專案設定指南

Unity XR 基礎知識

如果您是 Unity 或 XR 開發的新手,可以參閱 Unity 的 XR 手冊,瞭解基本 XR 概念和工作流程。XR 手冊包含以下資訊:

開發及發布 Android 應用程式

Unity 提供深入的說明文件,協助您為 Android 開發、建構及發布應用程式,涵蓋的範圍包括 Unity 中的 Android 權限Android 建構設定為 Android 建構應用程式,以及提交至 Google Play

適用於 Android XR 的 Unity 套件

有兩個套件可支援為 Android XR 建構 Unity 應用程式。這兩個套件都是 XR 供應器外掛程式,可透過 Unity 的 XR 外掛程式管理套件啟用。XR 外掛程式管理工具會新增專案設定,用於管理 XR 外掛程式的載入、初始化、設定和建構支援功能,並提供相關說明。如要讓應用程式在執行階段執行 OpenXR 功能,專案必須透過外掛程式管理員啟用這些功能。

這張圖片顯示了透過 Unity 編輯器啟用這些功能群組的範例。

Unity XR 外掛程式管理畫面範例

Unity OpenXR Android XR

Unity OpenXR Android XR 套件是 XR 外掛程式,可在 Unity 中新增 Android XR 支援功能。這個 XR 外掛程式可為 Unity 提供大部分 Android XR 支援功能,並為 AR Foundation 專案啟用 Android XR 裝置支援功能。AR Foundation 專為想要打造 AR 或混合實境體驗的開發人員設計。它提供 AR 功能的介面,但不會自行實作任何功能。Unity OpenXR Android XR 套件提供實作項目。如要開始使用這個套件,請參閱套件手冊,其中包含入門指南。

Unity 適用的 Android XR 擴充功能

Unity 適用的 Android XR 擴充功能可補足 Unity OpenXR Android XR 套件,並提供額外功能,協助您打造沉浸式體驗。您可以單獨使用,也可以搭配 Unity OpenXR Android XR 套件使用。

如要開始使用這個套件,請按照專案設定指南Unity 專用 Android XR 擴充功能快速入門指南操作。

功能和相容性考量

下表說明 Unity OpenXR:Android XR 套件和 Unity 適用的 Android XR 擴充功能套件支援的功能,可用於判斷哪個套件包含您需要的功能,以及任何相容性考量。

功能

Unity OpenXR:Android XR 功能字串

Unity 適用的 Android XR Extensions 功能字串

用途和預期行為

擴增實境工作坊

Android XR:擴增實境工作階段

  • 功能設定包括「最佳化緩衝區捨棄」(Vulkan)

Android XR (Extensions):工作階段管理

  • 功能設定包括子樣本 (Vulkan) 和 URP 空間扭曲 (Vulkan)

如要使用這兩個套件的功能,您必須為該套件啟用 AR 工作階段功能。您可以同時啟用這兩組功能,個別功能會依據情況處理衝突。

追蹤裝置

不適用

不適用

裝置追蹤功能可用於追蹤裝置在實體空間中的旋轉和位置。XR Origin GameObject 會透過其 XROrigin 元件和 GameObject 階層 (含相機和 TrackedPoseDriver),自動處理裝置追蹤,並將可追蹤物轉換為 Unity 的座標系統。

相機

Android XR:擴增實境相機

不適用

這項功能支援光線估計和全螢幕傳遞。

飛機偵測

Android XR:AR 平面

Android XR (擴充功能):平面

這兩項功能相同,請擇一使用。我們已納入 Android XR (Extensions):平面,讓開發人員可以使用 Android XR (Extensions):物件追蹤和持久錨點功能,而不必依附 Unity OpenXR Android XR 套件。日後,Android XR (Extensions):平面會移除,改為 Android XR:AR 錨點。

物件追蹤

不適用

Android XR (擴充功能):物件追蹤

這項功能可支援在實體環境中偵測及追蹤物件,並搭配參照物件資料庫使用。

臉部追蹤

Android XR:擴增實境臉部

  • XR_ANDROID_avatar_eyes only
  • 不支援臉部追蹤

Android XR:臉部追蹤

  • XR_ANDROID_face_tracking

系統會透過 Android XR:擴增實境臉部功能提供自造角色眼睛支援功能。透過 Android XR:臉部追蹤功能存取使用者的臉部表情。這兩項功能可視需要搭配使用。

光線投射

Android XR:AR 光線投射

  • 平面錨點
  • 深度錨點

不適用

這項功能可讓您投擲光線,並計算該光線與在實體環境中偵測到的平面追蹤物或深度追蹤物之間的交點。

錨點

Android XR:擴增實境錨點

Android XR (擴充功能):錨點

  • 功能設定包括持久性。

這兩項功能都支援空間錨點和平面錨點,請使用其中一種功能。如需持續性錨點,請使用 Android XR (擴充功能):錨點。日後,Android XR (Extensions):Anchor 將會移除,所有 Anchor 功能都會納入 Android XR:AR Anchor。

遮蔽

Android XR:AR 遮蔽

  • 環境深度

不適用

遮蔽功能可讓應用程式中的混合實境內容隱藏起來,或在實體環境中的物體後方部分遮蔽。

成效指標

Android XR 效能指標

不適用

使用這項功能,即可存取 Android XR 裝置的效能指標。

組合圖層

組合圖層支援 (需要 OpenXR 外掛程式和 XR 組合圖層)

Android XR:透視合成層

  • XR_ANDROID_composition_layer_passthrough_mesh

使用 Unity 的組合圖層支援功能,建立基本的組合圖層 (例如四邊形、圓柱、投影)。Android XR:您可以使用穿透式合成層,透過自訂網格建立穿透式層,並從 Unity 的 GameObject 讀取。

Foveated Rendering

重點渲染 (需要 OpenXR 外掛程式)

  • 支援以眼睛追蹤方式進行 foveated 算繪:以使用者目前注視的區域為中心,顯示解析度較高的區域,讓使用者不易察覺

視覺焦點 (舊版)

焦點渲染可降低使用者周邊視野區域的解析度,進而加快渲染速度。只有使用 URP 和 Vulkan 的應用程式,才能支援 Unity 的對焦點區域進行轉譯的功能。Unity 適用的 Android XR 擴充功能中的 Foveation (舊版) 功能也支援 BiRP 和 GLES。建議您盡可能使用 Unity 的重點區渲染功能,請注意,針對 Android XR 建構時,建議同時使用 URP 和 Vulkan。

無邊界參考空間

不適用

Android XR:無界限的參考空間

這項功能會將 XRInputSubsystem 追蹤來源模式設為 Unbounded。Unbounded 表示 XRInputSubsystem 會追蹤與世界錨點相關的所有 InputDevices,而錨點可能會變更。

環境混合模式

不適用

環境混合模式

這項功能可讓您設定 XR 環境混合模式,用於控制啟用穿透功能時,虛擬圖像與實際環境的混合方式。

輸入和互動

Android XR 支援多模態自然輸入。

除了手勢和眼球追蹤功能,也支援 6DoF 控制器、滑鼠和實體鍵盤等周邊裝置。這表示 Android XR 應用程式應支援手勢互動,且無法假設所有裝置都會隨附控制器。

互動資料剖析

Unity 會使用互動設定檔,管理 XR 應用程式與各種 XR 裝置和平台的通訊方式。這些設定檔會為不同的硬體設定建立預期的輸入和輸出內容,確保各種平台的互通性和功能一致性。啟用互動設定檔後,您就能確保 XR 應用程式可在不同裝置上正常運作、維持一致的輸入對應,以及存取特定 XR 功能。如何設定互動設定檔:

  1. 開啟「Project Settings」視窗 (選單:編輯 > 專案設定)。
  2. 按一下「XR 外掛程式管理」展開外掛程式部分 (如有必要)。
  3. 在 XR 外掛程式清單中選取「OpenXR」
  4. 在「互動設定檔」部分,選取「+」按鈕即可新增設定檔。
  5. 從清單中選取要新增的設定檔。

手部互動

手勢互動功能 (XR_EXT_hand_interaction) 由 OpenXR 外掛程式提供,您可以啟用手勢互動設定檔,在 Unity 輸入系統中公開 裝置版面配置。請將這個互動設定檔用於手部輸入,這類輸入內容支援 OpenXR 定義的四種動作姿勢:「捏」(pinch)、「戳」(poke)、「瞄準」(aim) 和「握住」(grip)。如果您需要其他手勢互動或手勢追蹤功能,請參閱本頁的「XR 手勢」相關說明。

眼神互動

OpenXR 外掛程式會提供眼神互動 (XR_EXT_eye_gaze_interaction),您可以使用這個版面配置來擷取擴充功能傳回的眼神姿勢資料 (位置和旋轉)。如要進一步瞭解眼神交互功能,請參閱 OpenXR 輸入指南

控制器互動

Android XR 支援 Oculus Touch 控制器設定檔,可用於 6DoF 控制器。這兩種設定檔皆由 OpenXR 外掛程式提供。

滑鼠互動

Android XR 滑鼠互動設定檔 (XR_ANDROID_mouse_interaction) 由 Unity 適用的 Android XR 擴充功能提供。會在 Unity 輸入系統中公開 <AndroidXRMouse> 裝置版面配置。

手掌姿勢互動

OpenXR 外掛程式支援手掌姿勢互動 (XR_EXT_palm_pose),可在 Unity 輸入系統中公開 <PalmPose> 版面配置。手勢姿勢並非用於複雜用途的手勢追蹤擴充功能或套件的替代方案,而是用於放置應用程式專屬視覺內容 (例如圖像化身)。手掌姿勢包含手掌位置和方向。

XR 手勢

XR 手勢套件可讓您存取手勢追蹤資料 (XR_EXT_hand_trackingXR_FB_hand_tracking_aim),並提供包裝函式,將手部關節資料從手勢追蹤轉換為輸入姿勢。如要使用 XR Hands 套件提供的功能,請啟用 手勢追蹤子系統Meta 手勢追蹤 Aim OpenXR 功能。

示範如何啟用手勢追蹤

如果您需要更精細的手勢姿勢或手部關節資料,或是需要使用自訂手勢,XR 手部套件就非常實用。

詳情請參閱 Unity 的說明文件,瞭解如何在專案中設定 XR Hands

選擇手部算繪方式

Android XR 支援兩種手部算繪方式:手部網格和預製視覺化器。

手網格

Android XR Unity 套件包含手部網格功能,可提供對 XR_ANDROID_hand_mesh extension 的存取權。Hand Mesh 功能會為使用者的手提供網格。手網格包含三角形的頂點,代表手的幾何圖形。這項功能的用途是提供個人化網格,以便呈現使用者手部的實際幾何圖形。

XR Hands 預製模組

XR Hands 套件包含名為「Hands Visualizer」的範例,其中包含完整設定的左手和右手,可為使用者手部呈現適合情境的表示方式。

系統手勢

Android XR 包含系統手勢,可讓使用者開啟選單,以便返回、開啟啟動器或查看目前執行中的應用程式。使用者可以使用慣用手指頭捏合手勢來啟用此系統選單。

當使用者與系統導覽選單互動時,應用程式只會回應頭部追蹤事件。XR Hands 套件可偵測使用者執行特定動作的時間,例如與系統導覽選單互動。檢查 AimFlags SystemGesture 和 DominantHand,即可瞭解系統何時執行這項系統動作。如要進一步瞭解 AimFlags,請參閱 Unity 的 Enum MetaAimFlags 說明文件

XR 互動工具包

XR 互動工具包是一套高階的互動系統,可用於建立 VR 和 AR 體驗,這個架構可讓您透過 Unity 輸入事件,使用 3D 和 UI 互動功能。它支援互動工作,包括觸覺回饋、視覺回饋和移動。