Unity - MRTK - HoloLens:修改 2D 按钮的对撞机,使光标靠近

Unity - MRTK - HoloLens: Modify Collider of 2D-Buttons so the Cursor gets closer

我目前的问题是光标离按钮太远。你可以在屏幕截图中看到我的意思。将鼠标悬停在列表中的按钮上如下所示:

问题:我该怎么做才能让光标离按钮更近,因为在 HoloLens 上你可以看到距离?

查看 canvas 上除了按钮以外的其他地方,光标越来越近:

--编辑--
我应该提到场景有一个缩放的立方体(屏幕截图中的灰色东西)和在它前面的世界 canvas(白色东西),其中包含 scrollview/list.

我看到 UI 个元素有相同的行为。

我只能给你一个解决方法。它有点hacky但它​​有效:

  1. 遍历 所有 UI 元素,尤其是 TextImage 并禁用选项 RayCast Target .

    这使得光标位于它们的正上方......但是你会注意到你的Button现在是non-responsive并且你可以不再与他们互动。

    发生这种情况是因为物理系统需要 RayCastTarget 或 Collider 才能触发它的指针事件,例如PointerEnterPointerDown

  2. 因此现在添加一个 BoxCollider 而不是 BoxCollider2D!)到您的 Button 并将其缩放到正确的大小。看起来您正在使用 VerticalLayoutGroup,因此您可以通过将 RectTransform 设置为居中一次来简单地更正 BoxCollider 的位置(VerticalLayoutgroup 无论如何都会 re-enforce Top-Left锚定)。在我的例子中 BoxCollider 需要 0.8 和高度 0.1 ... 对于 z 我选择 0.01 但如果你愿意的话它可以更小

万岁,现在按钮又可以交互了,光标只有它通常的距离 + BoxColliders 选择的 z 厚度的一半。

由于背景立方体有它自己的 BoxCollider,所以我们不需要为 ScrollView 和 UI 面板添加更多 Colliders

如果需要,您可能还需要为滚动条添加一些!


如前所述,这更像是一种快速解决方法,可能不是最终解决方案,因为每当 ButtonScrollRect 的大小发生变化时,您都必须重新处理那些硬编码的 BoxCollider 维度以及...

我在 3D 对象上遇到了类似的问题。这可能发生,因为对象碰撞定义。我的意思是,您可以导入渲染网格,但网格对撞机可能不同(更大、更小……)

希望这能解决您的问题 ;)