在MRTK v2.1中更改指针的层掩码

问题描述 投票:0回答:2

我需要在运行时更改图层蒙版,以便根据上下文选择不同的对象。据我了解,这应该在InputSystemProfile中通过编辑Pointers属性来完成:

CoreServices.InputSystem.InputSystemProfile.PointerProfile.PointingRaycastLayerMasks

但是该字段是只读的,除了在编辑器中手动进行之外,我找不到其他编辑方式。顺便说一句,我正在为输入系统使用可编辑的配置文件。

在HTK中,这是通过将值分配给:GazeManager.Instance.RaycastLayerMasks

有什么建议吗?

c# unity3d hololens mrtk
2个回答
0
投票

您可以通过覆盖来更改指针图层蒙版所有指针都可以在这里找到:CoreServices.InputSystem.DetectedInputSources您可以在每一个中执行以下操作:ptr.PrioritizedLayerMasksOverride

希望这会有所帮助


0
投票

对于返回的字段PointingRaycastLayerMasks,它是引用类型LayerMask[]的实例。因此,尽管您不能更改引用本身的值,但是可以更改属于该引用对象的数据。

因此,您可以使用以下代码更改图层蒙版:

//Uncheck [PostProcessing],[Spatial Awareness]
CoreServices.InputSystem.InputSystemProfile.PointerProfile.PointingRaycastLayerMasks[0].value = 19;

如果您对如何在Unity中使用LayerMask存有疑问,请参阅此处:How do I use layermasks?

© www.soinside.com 2019 - 2024. All rights reserved.