鸟语天空
MRTK-MixedRealityToolkit
post by:追风剑情 2023-2-8 14:59

[MRTK] MixedRealityToolkit类

22222.png

1111.png

该类负责协调混合现实工具包的操作。这是整个项目中唯一的单例。它为项目中使用的所有活动服务提供服务注册表,并为项目提供活动配置文件。可以随时交换配置文件以满足项目的需要。

MixedRealityToolkit
属性 描述
ActiveProfile 活动配置文件的公共属性,确保在更改配置时引发事件。
ActiveSystems Obsolete
当前使用MixedRealityToolkit注册的活动系统。
BoundarySystem Obsolete
当前使用MixedRealityToolkit注册的边界系统。
CameraSystem Obsolete
当前使用MixedRealityToolkit注册的相机系统。
DiagnosticsSystem Obsolete
当前使用MixedRealityToolkit注册的诊断系统。
HasActiveProfile 检查是否存在MixedRealityToolkit的有效实例,然后检查是否存在有效的Active Profile。
InputSystem Obsolete
当前使用MixedRealityToolkit注册的输入系统。
Instance 返回类的单例。
IsActiveInstance 如果这是活动实例,则返回true。
IsInitialized 实例是否已初始。
IsProfileSwitching 当前是否正在进行活动的配置文件切换。
IsSceneSystemEnabled 场景系统是否启用。
IsTeleportSystemEnabled 传送系统是否启用。
RegisteredMixedRealityServices Obsolete
注册了的混合现实服务。
SceneSystem Obsolete
当前使用MixedRealityToolkit注册的场景系统。
SpatialAwarenessSystem Obsolete
当前使用MixedRealityToolkit注册的空间感知系统。
TeleportSystem Obsolete
当前使用MixedRealityToolkit注册的传送系统。
方法 描述
AssertIsInitialized() 显示MixedRealityToolkit类是否已初始化的断言。
ConfirmInitialized() 用于确定MixedRealityToolkit类是否已初始化的静态函数。
DisableAllServicesByType(Type) 禁用给定类型的混合现实工具包活动服务注册表中的所有服务。
DisableAllServicesByTypeAndName(Type, String)
禁用混合现实工具包活动服务注册表中给定类型和名称的所有服务。
EnableAllServicesByType(Type)
为给定类型启用混合现实工具包活动服务注册表中的所有服务。
EnableAllServicesByTypeAndName(Type, String)
为给定类型和名称启用混合现实工具包活动服务注册表中的所有服务。
GetService<T>(String, Boolean) 获取已注册服务的实例。
GetServices<T>(String)
获取与请求的类型匹配的已注册服务实例的集合。
IsServiceRegistered<T>(String)
检查是否已注册指定类型的服务。
IsSystemRegistered<T>()
检查是否已注册指定类型的系统。
RegisterService<T>(T)
注册指定类型的服务。
RegisterService<T>(Type, SupportedPlatforms, Object[])
注册指定类型的服务。
ResetConfiguration(MixedRealityToolkitConfigurationProfile)
当配置文件替换为新配置时,强制所有服务重置并读取新值。
SetActiveInstance(MixedRealityToolkit)
设置活动实例。
SetInstanceInactive(MixedRealityToolkit)
关闭活动实例。
SetProfileBeforeInitialization(MixedRealityToolkitConfigurationProfile)
在MixedRealityToolkit初始化(即Awake())之前设置活动配置文件。
UnregisterService<T>(String)
注销指定类型的服务。
UnregisterService<T>(T)
注销服务。


Input - Pointers

设置 Pointer 射线要与哪些层进行碰撞检测。如果不希望 Pointer 与物理空间产生碰撞,可以去掉 Spatial Awareness 前面的勾。
1111.png

从配置读取碰撞层

LayerMask[] layerMasks = MixedRealityToolkit.Instance.ActiveProfile.InputSystemProfile.PointerProfile.PointingRaycastLayerMasks;

运行时设置碰撞层

LayerMask layerMask = new LayerMask();
layerMask.value = LayerMask.GetMask("Default", "TransparentFX", "Water", "UI", "Spatial Awareness");
LayerMask[] layerMasks = new LayerMask[] { layerMask };

IEnumerable<IMixedRealityPointer> enumerator = CoreServices.FocusProvider.GetPointers<IMixedRealityPointer>();
foreach (IMixedRealityPointer pointer in enumerator)
{
	//覆盖配置中的碰撞层
	pointer.PrioritizedLayerMasksOverride = layerMasks;
}


MRTK辅助类

using UnityEngine;
using System.Collections.Generic;
using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;
/// <summary>
/// MRTK辅助类
/// </summary>
public sealed class MRTKHelper
{
    public static bool PhysicalSpaceLayerMaskEnabled
    {
        set
        {
            LayerMask layerMask = new LayerMask();
            if (value)
                layerMask.value = LayerMask.GetMask("Default", "TransparentFX", "Water", "UI", "Spatial Awareness");
            else
                layerMask.value = LayerMask.GetMask("Default", "TransparentFX", "Water", "UI");
            LayerMask[] layerMasks = new LayerMask[] { layerMask };

            IEnumerable<IMixedRealityPointer> enumerator = CoreServices.FocusProvider.GetPointers<IMixedRealityPointer>();
            foreach (IMixedRealityPointer pointer in enumerator)
            {
                //覆盖配置文件中的碰撞层
                pointer.PrioritizedLayerMasksOverride = layerMasks;
            }
        }
    }
}

评论:
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容