一、准備工作
1.打開Unity新建一個空場景,將場景中默認的“Main Camera”刪除掉
2.Hierarchy->XR->AR Session Origin 創建AR Session Origin組件
3.Hierarchy->XR->AR Session 創建AR Session組件
二、環境配置(配置為 AR 必備或 AR 可選)
AR 必備是指您的應用沒有 AR 便無法使用。 在安卓設備上會打開應用商城,下載 Goodle Play Services for AR 。如果手機不支持AR功能又強行安裝了 Goodle Play Services for AR ,一運行AR功能就會閃退。ARFoundation默認的設置是AR必備
AR 可選是指您的AR不是必要的功能,在Android設備上不會自動下載安裝 Goodle Play Services for AR。(建議選擇AR可選,然后判斷設備是否支持AR功能后,再安裝 Goodle Play Services for AR)
1.Edit->Project Settings...->XR->ARCore Build Settings(蘋果設備選擇ARKit Build Settings)
2.點擊“Create”創建一個 ARCoreSettings,選擇一個路徑保存(蘋果設備創建 ARKitSettings )
3.根據項目需要,選擇AR必選或AR可選 (強烈建議使用AR可選)
4.如果您的應用只是作為插件,導出集成到Android原生工程中,Unity中的AR必選或可選設置會被Android原生工程設置覆蓋,如果Android原生工程並未設置,默認選擇的是AR必選,需要在 AndroidManifest.xml 文件中添加
以包含下列條目:
<!-- AR Required apps must declare minSdkVersion ≥ 24 --> <uses-sdk android:minSdkVersion="24" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> … <application> <meta-data android:name="com.google.ar.core" android:value="optional" /> … </application>
android原生工程具體設置請移步:https://developers.google.cn/ar/develop/java/enable-arcore
三、代碼實現
public class MyComponent { private ARSession m_ARSession; IEnumerator Start() { yield return ARSession.CheckAvailability(); //當前設備不支持AR功能 if (ARSession.state == ARSessionState.Unsupported) { //實現你不支持設備的代碼 } else { //設備支持 AR,但需要安裝相應軟件(這里指手機端的 ARCore 或者 ARKit) if (ARSession.state == ARSessionState.NeedsInstall) { yield return ARSession.Install(); } //設備支持AR功能並且已經安裝完成相應的軟件Todo } } }
四、ARSessionState
ARSessionState |
描述 |
---|---|
None |
AR系統尚未初始化,可用性未知。 |
Unsupported |
當前設備不支持AR。 |
CheckingAvailability |
系統正在檢查當前設備上AR的可用性。 |
NeedsInstall |
當前設備支持AR,但是AR支持需要安裝其他軟件。 |
Installing |
正在安裝AR軟件。 |
Ready |
AR已支持並准備就緒。 |
SessionInitialized |
AR會話正在初始化(即正在啟動)。這通常意味着AR正在運行,但尚未收集到足夠的有關環境的信息。 |
SessionTracking |
AR會話正在運行並且正在跟蹤(也就是說,設備能夠確定其在世界上的位置和方向)。 |
推薦學習資料
2.Unity官方API:學習一門技術,官方教程是最權威的
3.ARFoundation Samples : ARFoundation 示例地址
歡迎對AR技術感興趣的朋友,加入QQ群:883655607 討論