美文网首页AR之道
AR Foudation案例解析(三) ------ Check

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

作者: 千喜Ya | 来源:发表于2019-07-01 14:22 被阅读3次

    一.环境

    案例网址 : 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。

    相关文章

      网友评论

        本文标题:AR Foudation案例解析(三) ------ Check

        本文链接:https://www.haomeiwen.com/subject/zprgcctx.html