Unity 中 UI 个元素之间的碰撞

Collisions between UI elements in Unity

如果我的 canvas 在世界 space 中渲染,我能够检测到 UI 组件和游戏对象之间的碰撞。在这里,当 canvas 渲染模式为屏幕 space 覆盖时,我试图找到两个 UI 元素(比如 UI 按钮)之间的碰撞。

我向我的 UI 按钮添加了盒式碰撞器组件,并尝试使用 OnCollisionEnter2D 和 OnTriggerEnter2D。但是,未检测到碰撞。有没有办法检测碰撞?

该题不需要代码正文。不过,我想出了一个解决办法。对于 UI 个元素,您需要:

  • 附加一个 rigidbody2d 组件
  • 附加一个盒子碰撞器组件
  • 禁用重力
  • 启用 isTrigger 复选框。

现在在附加到 UI 元素之一的脚本中:

void OnTriggerEnter2D(Collider2D other) 
{
    Debug.Log ("Triggered");
}

这将检测碰撞。