命名空间: UnityEngine.VR.WSA 类型: WorldAnchor World Anchor为应用程序提供了一种能够将物体保留在特定位置和旋转状态的方法。这保证了GameObjects的稳定性,同时提供了后续在真实世界中保持全息对象位置的能力。也就是说,可以为全息物体来添加空间锚点,这样,在后续步骤中就能将全息物体准确恢复到它原来的位置。 添加空间锚 添加空间锚,在GameObject上访问AddComponent<WorldAnchor>()并在真实世界转换你需要的空间锚点。 移除空间锚 如果你不想再继续将GameObject固定在特定位置,同时在场景中也不想移动它,那么可以访问调用Destroy来删除WorldAnchor组件,代码如下: 如果你想要在场景中移动对象,需要访问调用DestroyImmediate来删除空间锚组件,将会立即移除,代码如下: 移动锚定的对象当GameObject已附加上空间锚组件,它就不能被移动。如果你需要移动对象,那么你必须: 1. 立刻销毁删除空间锚组件 2. 移动GameObject 3.在GameObject上添加一个新的空间锚 处理定位变化有些时候,空间锚可能不能在世界中被定位到。如果这种情况发生,Unity将不能更新锚定对象的转变。在应用运行时,这些可能会发生变化。不及时处理定位的变化,可能会导致对象不会出现在准确的位置上。 为了追踪可定位能力的变化,需要采取如下做法: 1. 订阅OnTrackingChanged事件 2. 处理此事件 订阅OnTrackingChanged事件 当底层空间锚在被定位和不定位状态之间变化这个事件将被启用访问。 处理OnTrackingChanged事件
代码如下: 设定明确初始状态有时空间锚能够立即被定位到。这种情况下,给对象添加空间锚后,空间锚组件的isLocated属性值将会被设为true,这个时候OnTrackingChanged事件将不会被触发。因此,在添加空间锚组件后,推荐立即使用初始的isLocated状态去调用OnTrackingChanged事件,代码如下: |