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

第二张是world space设置下的canvas

然后第一个是可以正常交互按键的,第二个canvas下的button就点击无效,已经检查了graphic raycaster和event system,都设置的没问题,不知道为什么world space的canvas没法点击了?
World Space 的 Canvas 不会接收输入事件,因为它是按世界坐标放置的,而不是屏幕坐标。
要修复这个问题,你有两种选择:
- 为 World Space 的 Canvas 添加一个 Graphic Raycaster 组件,并将它添加到相应的 Event System 中。这会让 Canvas 接收射线投射事件并相应点击。
- 将 World Space 的 Canvas 设置为 Screen Space - Overlay,但调整它的Z轴位置使其置于场景之上。这会让其接收正常的屏幕输入事件。
我个人更推荐第二种方法。世界空间的报价目的通常是使UI元素在3D场景中看起来更自然,但Screen Space - Overlay 模式仍允许此目的,同时也使其可点击。
具体步骤如下: - 将 World Space Canvas 的 Render Mode 改为 Screen Space - Overlay
- 调整 Canvas 的 Z 轴位置,使其高于场景中的所有元素。适当的值通常在 5 到 10 之间。
- 在 Canvas 上添加 Canvas Scaler 组件,并勾选 Match Width or Height。这会使 Canvas 覆盖整个屏幕。
- 可选:调整 Canvas 的 Sorting Layer 和 Sorting Order,控制其在其他 Canvas 之前或之后呈现。
这应该可以让你的 World Space UI 元素在 3D 场景中正常工作,同时也是可点击的。