什么是 MixedRealityServiceRegistry 和 IMixedRealityServiceRegistrar?
混合现实工具包有两个名称非常相似的组件,它们执行相关的任务:
MixedRealityServiceRegistry
Mixed
Note
MixedRealityServiceRegistry包含对象的实例
实现了IMixed
实现 IMixed
MixedRealityServiceRegistry是作为一个静态c#类实现的,它是推荐使用的模式用于在应用程序代码中获取服务实例(service instances)。
下面的代码片段演示如何获取一个IMixedRealityInputSystem实例。
IMixedRealityInputSystem inputSystem = null;
if (!MixedRealityServiceRegistry.TryGetService<IMixedRealityInputSystem>(out inputSystem))
{
//获取input system失败。它可能没有注册
}
IMixedRealityServiceRegistrar
IMixed
其他registrars可以在MRTK/SDK/Experimental/Features文件夹中找到。这些组件可用于向应用程序添加单个服务(例如:空间感知)支持。下面列出了这些单个service manager。
- Boundary
System Manager - Camera
System Manager - Diagnostics
System Manager - Input
System Manager - Spatial
Awareness System Manager - Teleport
System Manager
除了InputSystemManager之外,上面的每个组件都负责 管理单一服务类型的注册和状态。InputSystem需要一些额外的支持服务(例如:FocusProvider),这些服务也是由InputSystemManager管理的。
通常,由IMixedRealityServiceRegistrar定义的方法由service management 组件在内部调用,或者由需要额外服务组件才能正确工作的服务调用。应用程序代码通常不应该调用这些方法,因为这样做可能会导致应用程序的行为不可预测(例如:缓存的服务实例可能无效)。