在 MRTK v2.1 中更改指针的图层掩码
Changing the layer mask of a pointer in MRTK v2.1
我需要在运行时更改图层蒙版,以便根据上下文 select 不同的对象。
根据我的理解,这应该在 InputSystemProfile
中通过编辑指针 属性:
来完成
CoreServices.InputSystem.InputSystemProfile.PointerProfile.PointingRaycastLayerMasks
但该字段是只读的,除了在编辑器中手动编辑外,我找不到其他方法对其进行编辑。
顺便说一句,我正在为输入系统使用可编辑的配置文件。
在 HTK 中,这是通过为以下对象赋值来实现的:
GazeManager.Instance.RaycastLayerMasks
有什么建议吗?
您可以通过覆盖来更改指针图层蒙版
所有的指针都可以在这里找到:CoreServices.InputSystem.DetectedInputSources
在每一个中你都可以做:
ptr.PrioritizedLayerMasksOverride
希望对您有所帮助
对于返回的字段PointingRaycastLayerMasks
,它是一个引用类型的实例LayerMask[]
。因此,虽然您不能更改引用本身的值,但可以更改属于该引用对象的数据。
因此,您可以使用以下代码更改图层蒙版:
//Uncheck [PostProcessing],[Spatial Awareness]
CoreServices.InputSystem.InputSystemProfile.PointerProfile.PointingRaycastLayerMasks[0].value = 19;
如果您对如何在 Unity 中使用 LayerMasks 有疑问,请参阅此处:How do I use layermasks?
我需要在运行时更改图层蒙版,以便根据上下文 select 不同的对象。
根据我的理解,这应该在 InputSystemProfile
中通过编辑指针 属性:
CoreServices.InputSystem.InputSystemProfile.PointerProfile.PointingRaycastLayerMasks
但该字段是只读的,除了在编辑器中手动编辑外,我找不到其他方法对其进行编辑。 顺便说一句,我正在为输入系统使用可编辑的配置文件。
在 HTK 中,这是通过为以下对象赋值来实现的:
GazeManager.Instance.RaycastLayerMasks
有什么建议吗?
您可以通过覆盖来更改指针图层蒙版 所有的指针都可以在这里找到:CoreServices.InputSystem.DetectedInputSources 在每一个中你都可以做: ptr.PrioritizedLayerMasksOverride
希望对您有所帮助
对于返回的字段PointingRaycastLayerMasks
,它是一个引用类型的实例LayerMask[]
。因此,虽然您不能更改引用本身的值,但可以更改属于该引用对象的数据。
因此,您可以使用以下代码更改图层蒙版:
//Uncheck [PostProcessing],[Spatial Awareness]
CoreServices.InputSystem.InputSystemProfile.PointerProfile.PointingRaycastLayerMasks[0].value = 19;
如果您对如何在 Unity 中使用 LayerMasks 有疑问,请参阅此处:How do I use layermasks?