ARFoundation系列讲解-07检查设备支持AR功能
一、准备工作
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 讨论