混合现实服务注册表 - MRTK2

混合现实工具包有两个名称非常相似的、执行相关任务的组件:MixedRealityServiceRegistry 和 IMixedRealityServiceRegistrar。

MixedRealityServiceRegistry

MixedRealityServiceRegistry 是包含每个已注册服务(核心系统和扩展服务)实例的组件。

注意

MixedRealityServiceRegistry 包含实现 IMixedRealityService 接口的对象(包括 IMixedRealityExtensionService)的实例。

实现 IMixedRealityDataProvider(IMixedRealityService 的子类)的对象未在 MixedRealityServiceRegistry 中显式注册。 这些对象由单独的服务(例如空间感知)管理。

MixedRealityServiceRegistry 实现为静态 C# 类,是建议的模式,用于在应用程序代码中获取服务实例。

以下代码片段演示如何获取 IMixedRealityInputSystem 实例。

IMixedRealityInputSystem inputSystem = null;

if (!MixedRealityServiceRegistry.TryGetService<IMixedRealityInputSystem>(out inputSystem))
{
    // Failed to acquire the input system. It may not have been registered
}

IMixedRealityServiceRegistrar

IMixedRealityServiceRegistrar 是用于定义组件实现的功能的接口,这些组件管理一个或多个服务的注册。 实现 ImixedRealityServiceRegistrar 的组件负责在 MixedRealityServiceRegistry 中添加和删除数据。 MixedRealityToolkit 对象就是这样的一个组件。

其他注册器可以在 MRTK/SDK/Experimental/Features 文件夹中找到。 这些组件可用于向应用程序添加单一服务(例如空间感知)支持。 下面列出了这些单一服务管理器。

上述每个组件(InputSystemManager 除外)负责管理单一服务类型的注册和状态。 InputSystem 需要一些附加的支持服务(例如 FocusProvider),这些服务也由 InputSystemManager 管理。

一般情况下,IMixedRealityServiceRegistrar 定义的方法由服务管理组件在内部调用,或者由需要附加服务组件才能正常运行的服务调用。 应用程序代码通常不应调用这些方法,因为这可能会导致应用程序的行为不可预测(例如,缓存的服务实例可能失效)。

另请参阅