一.环境
案例网址 : 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。 |
网友评论