AR之道

AR Foudation案例解析(三) ------ Check

2019-07-01  本文已影响3人  千喜Ya

一.环境

案例网址 : https://github.com/Unity-Technologies/arfoundation-samples.git
官方文档网址 : https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@2.2/api/UnityEngine.XR.ARFoundation.html
Unity版本 : 2019.3.0
SDK版本 :

二.案例解析

1.功能

这个示例显示了如何在启用ARSession之前检查AR支持。 特别是对于ARCore,设备可以支持ARCore,但不能安装它。此示例将检测此情况并提示用户安装ARCore。要自己测试此功能,请使用支持的设备并卸载ARCore。(设置>搜索“ARCore”并卸载或禁用它。)

2.代码解析

检查代码如下 :

 IEnumerator CheckSupport()
    {
        SetInstallButtonActive(false);

        Log("Checking for AR support...");

        yield return ARSession.CheckAvailability();

        if (ARSession.state == ARSessionState.NeedsInstall)
        {
            Log("Your device supports AR, but requires a software update.");
            Log("Attempting install...");
            yield return ARSession.Install();
        }

        if (ARSession.state == ARSessionState.Ready)
        {
            Log("Your device supports AR!");
            Log("Starting AR session...");

            // To start the ARSession, we just need to enable it.
            m_Session.enabled = true;
        }
        else
        {
            switch (ARSession.state)
            {
                case ARSessionState.Unsupported:
                    Log("Your device does not support AR.");
                    break;
                case ARSessionState.NeedsInstall:
                    Log("The software update failed, or you declined the update.");

                    // In this case, we enable a button which allows the user
                    // to try again in the event they decline the update the first time.
                    SetInstallButtonActive(true);
                    break;
            }

            Log("\n[Start non-AR experience instead]");

            //
            // Start a non-AR fallback experience here...
            //
        }
    }

安装arcore代码如下 :

  IEnumerator Install()
    {
        SetInstallButtonActive(false);

        if (ARSession.state == ARSessionState.NeedsInstall)
        {
            Log("Attempting install...");
            yield return ARSession.Install();

            if (ARSession.state == ARSessionState.NeedsInstall)
            {
                Log("The software update failed, or you declined the update.");
                SetInstallButtonActive(true);
            }
            else if (ARSession.state == ARSessionState.Ready)
            {
                Log("Success! Starting AR session...");
                m_Session.enabled = true;
            }
        }
        else
        {
            Log("Error: ARSession does not require install.");
        }
    }

其实主要是ARSessionState属性,翻译如下 :

名称 描述
CheckingAvailability 系统正在检查AR的可用性。 。
Installing 正在安装AR软件。 。
NeedsInstall AR受支持,但需要额外安装。 。
None AR系统尚未初始化。可用性未知。 。
Ready AR已得到支持并准备就绪。
SessionInitializing AR会话正在初始化(即,启动)。这通常意味着AR正在运行,但尚未收集有关环境的足够信息。
SessionTracking AR会话正在运行并且正在跟踪(即,设备能够确定其在世界中的位置和方向)。
Unsupported 当前设备不支持AR。
上一篇下一篇

猜你喜欢

热点阅读