mrtk_developmentreleases/2.0.0releases/2.1.0releases/2.2.0

    Show / Hide Table of Contents

    什么是 MixedRealityServiceRegistry 和 IMixedRealityServiceRegistrar?

    混合现实工具包有两个名称非常相似的组件,它们执行相关的任务:

    MixedRealityServiceRegistry

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

    Note

    MixedRealityServiceRegistry包含对象的实例 实现了IMixedRealityService 接口,包括IMixedRealityExtensionService。

    实现 IMixedRealityDataProvider(是IMixedRealityService的一个子类)的对象明确的地没有在MixedRealityServiceRegistry中注册。这些对象由各个服务管理(例如:空间感知)。

    MixedRealityServiceRegistry是作为一个静态c#类实现的,它是推荐使用的模式用于在应用程序代码中获取服务实例(service instances)。

    下面的代码片段演示如何获取一个IMixedRealityInputSystem实例。

    IMixedRealityInputSystem inputSystem = null;
    
    if (!MixedRealityServiceRegistry.TryGetService<IMixedRealityInputSystem>(out inputSystem))
    {
        //获取input system失败。它可能没有注册
    }
    

    IMixedRealityServiceRegistrar

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

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

    • BoundarySystemManager
    • CameraSystemManager
    • DiagnosticsSystemManager
    • InputSystemManager
    • SpatialAwarenessSystemManager
    • TeleportSystemManager

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

    通常,由IMixedRealityServiceRegistrar定义的方法由service management 组件在内部调用,或者由需要额外服务组件才能正确工作的服务调用。应用程序代码通常不应该调用这些方法,因为这样做可能会导致应用程序的行为不可预测(例如:缓存的服务实例可能无效)。

    建议浏览

    • IMixedRealityServiceRegistrar API 文档
    • MixedRealityServiceRegistry API 文档
    • Improve this Doc
    In This Article
    • MixedRealityServiceRegistry
    • IMixedRealityServiceRegistrar
    • 建议浏览
    Back to top Generated by DocFX