Unity多个canvas情况下,一个模式改为world space后按钮ui都失灵点不了

第一张是screen space overlay设置下的canvas

img


第二张是world space设置下的canvas

img


然后第一个是可以正常交互按键的,第二个canvas下的button就点击无效,已经检查了graphic raycaster和event system,都设置的没问题,不知道为什么world space的canvas没法点击了?

World Space 的 Canvas 不会接收输入事件,因为它是按世界坐标放置的,而不是屏幕坐标。
要修复这个问题,你有两种选择:

  1. 为 World Space 的 Canvas 添加一个 Graphic Raycaster 组件,并将它添加到相应的 Event System 中。这会让 Canvas 接收射线投射事件并相应点击。
  2. 将 World Space 的 Canvas 设置为 Screen Space - Overlay,但调整它的Z轴位置使其置于场景之上。这会让其接收正常的屏幕输入事件。
    我个人更推荐第二种方法。世界空间的报价目的通常是使UI元素在3D场景中看起来更自然,但Screen Space - Overlay 模式仍允许此目的,同时也使其可点击。
    具体步骤如下:
  3. 将 World Space Canvas 的 Render Mode 改为 Screen Space - Overlay
  4. 调整 Canvas 的 Z 轴位置,使其高于场景中的所有元素。适当的值通常在 5 到 10 之间。
  5. 在 Canvas 上添加 Canvas Scaler 组件,并勾选 Match Width or Height。这会使 Canvas 覆盖整个屏幕。
  6. 可选:调整 Canvas 的 Sorting Layer 和 Sorting Order,控制其在其他 Canvas 之前或之后呈现。
    这应该可以让你的 World Space UI 元素在 3D 场景中正常工作,同时也是可点击的。