做手机网站需要多少钱,昆山建设银行网站,华为开发者联盟,中搜网站提交当HoloLens设备不能识别到自己在世界中的位置时#xff0c;应用就会发生tracking loss。默认情况下#xff0c;Unity会暂停Update更新循环并显示一张闪屏图片给用户。当设备重新能追踪到位置时#xff0c;闪屏图片会消失#xff0c;并且Update循环还会继续。 此外#xff…当HoloLens设备不能识别到自己在世界中的位置时应用就会发生tracking loss。默认情况下Unity会暂停Update更新循环并显示一张闪屏图片给用户。当设备重新能追踪到位置时闪屏图片会消失并且Update循环还会继续。 此外用户也可以手动处理这个切换过程。发生tracking loss期间如果不做任何处理动作那么所有的场景中的全息内容将会处于body-locked状态。 默认处理方式 Default Handling 默认情况下发生tracking loss期间应用所有的更新动作、事件和消息都会被暂停。同时会应用会显示一张图片给用户。可以用通过项目设置Player settings- Splash Image-Holographic Tracking Loss image选项来设置tracking loss要显示的图片。 手动处理 Manual Handling 为了手动处理tracking loss 你需要在上面提到的设置选项上取消勾选“Display tracking loss image”选项。之后就需要使用下面特定的API来处理追踪状态变化。 命名空间: UnityEngine.VR.WSA 类型: WorldManager World Manager提供了一个事件(WorldManager.OnPositionalLocatorStateChanged)来让我们识别追踪状态追踪丢失/追踪可获取到同时还提供了一个属性来查询当前追踪状态(WorldManager.state)当追踪状态丢失时场景中相机将立刻静止不会再移动即使用户在运动。这意味全息图形将不再响应用户的物理位置的变化所有内容都会相对用户身体静止在手动处理追踪状态变化时你需要每一帧都查询当前追踪状态或者处理OnPositionalLocatorStateChanged事件。 轮询 Polling 追踪状态最重要的一个状态是PositionalLocatorState.Active这意味着当前HoloLens的状态追踪正常工作。任何其他的状态都会导致摄像机只剩下旋转增量而忽略位置变化。 例如 void Update()
{switch (UnityEngine.VR.WSA.WorldManager.state){case PositionalLocatorState.Active://处理激活状态内容break;case PositionalLocatorState.Activating:case PositionalLocatorState.Inhibited:case PositionalLocatorState.OrientationOnly:case PositionalLocatorState.Unavailable:default:// 摄像机当前只有旋转增量变化break;}
} 处理追踪状态变化事件 Handling the OnPositionalLocatorStateChanged event 此外更便利的方法是订阅状态追踪的OnPositionalLocatorStateChanged事件来处理 void Start()
{UnityEngine.VR.WSA.WorldManager.OnPositionalLocatorStateChanged WorldManager_OnPositionalLocatorStateChanged;
}private void WorldManager_OnPositionalLocatorStateChanged(PositionalLocatorState oldState, PositionalLocatorState newState)
{if (newState PositionalLocatorState.Active){// 处理即将进入追踪恢复时场景内容}else{// 处理即将进入状态丢失时场景内容}
}