传送系统 Teleport system
传送系统是MRTK的一个子系统,当应用程序使用不透明显示时,它处理传送用户。对于AR的体验(如HoloLens),传送系统不启用。对于沉浸式HMD体验(OpenVR, WMR),可以启用传送系统。
启用和禁用
This can also be done at runtime:
传送系统可以通过在其配置文件中切换复选框来启用或禁用。 这可以通过在场景中选择MixedRealityToolkit对象来完成,单击 "Teleport" ,然后切换 "Enable Teleport System" 复选框。
这也可以在运行时完成:
void DisableTeleportSystem()
{
CoreServices.TeleportSystem.Disable();
}
void EnableTeleportSystem()
{
CoreServices.TeleportSystem.Enable();
}
事件
传送系统通过 IMixedRealityTeleportHandler
接口公开事件,以便在传送操作开始、结束或取消 时提供信号。
有关事件的机制及其相关负载的更多细节,请参见链接的API文档。
使用
如何注册传送事件
下面的代码展示了如何创建一个监听传送事件的MonoBehaviour 。此代码假设已启用了传送系统。
using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Teleport;
using UnityEngine;
public class TeleportHandlerExample : MonoBehaviour, IMixedRealityTeleportHandler
{
public void OnTeleportCanceled(TeleportEventData eventData)
{
Debug.Log("Teleport Cancelled");
}
public void OnTeleportCompleted(TeleportEventData eventData)
{
Debug.Log("Teleport Completed");
}
public void OnTeleportRequest(TeleportEventData eventData)
{
Debug.Log("Teleport Request");
}
public void OnTeleportStarted(TeleportEventData eventData)
{
Debug.Log("Teleport Started");
}
void OnEnable()
{
// 这是为事件注册该类的关键调用。没有这个,类的IMixedRealityTeleportHandler接口将不会被调用。
CoreServices.TeleportSystem.RegisterHandler<IMixedRealityTeleportHandler>(this);
}
void OnDisable()
{
// 在禁用时取消注册很重要,否则这个类将继续接收传送事件
CoreServices.TeleportSystem.UnregisterHandler<IMixedRealityTeleportHandler>(this);
}
}