在 Unity 中,判断按钮是否被按下的依据是按钮的位置和大小。当按钮下面有一个 Image 时,按钮的区域是自身大小加上这个 Image 的区域组合。

如果你希望按钮使用特定的 Image1 作为判定区域,并且这个 Image1 和按钮不在同一个层级下,并且它们的大小和位置完全不重合,你可以使用 Raycast 来实现。你可以在按钮的 OnClick 事件中添加一个 Raycast 检测,当 Raycast 射线碰撞到特定的 Image1 时,触发点击事件,否则不触发。

具体的实现步骤如下:

  1. 将特定的 Image1 和按钮放置在不同的层级中。
  2. 在按钮的 OnClick 事件中添加以下代码:
public void OnClickButton()
{
    // 创建一个从点击位置发出的射线
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit hit;

    // 检测射线是否碰撞到特定的 Image1
    if (Physics.Raycast(ray, out hit) && hit.collider.gameObject == image1GameObject)
    {
        // 点击到特定的 Image1 时触发点击事件
        // 执行你的点击事件逻辑
    }
}

在以上代码中,image1GameObject 是特定的 Image1 所在的 GameObject。

通过这种方式,当点击按钮区域时不会触发点击事件,但是当点击 Image1 时会触发点击事件。

Unity 按钮点击区域判定:自定义区域、多层级和不重合 Image

原文地址: http://www.cveoy.top/t/topic/qAin 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录