首页 > 解决方案 > Unity:按下 UI 按钮时如何停止使用“Input.GetMouseButton(0)”?

问题描述

玩家是一名魔法师,按下鼠标左键可以用火球攻击敌人。

我使用的代码非常简单(在Update函数内部):

if (Input.GetMouseButton(0) && canShoot)
{
    canShoot = false;
    Invoke("AllowCanShoot", fireBreak);
    Attack();
}

canShoot是一个bool阻止玩家每帧攻击一次。

AllowCanShoot是一个设置为 的canShoot函数true

Attack()是处理攻击的函数,与这个问题无关。

当玩家靠近交易者时,我还有一个 UI 按钮出现在屏幕上。当玩家按下 UI 按钮时,他会攻击交易者。

我想要的是,他可以在不攻击他的情况下按下按钮。

我不能为玩家禁用攻击,因为敌人也可以找到商人,然后玩家可能不得不战斗。

我尝试的是:

标签: c#unity3d

解决方案


您可以使用该EventSystem.IsPointerOverGameObject()函数确保在攻击之前鼠标不在 UI 对象上:

if (Input.GetMouseButton(0) && canShoot && !EventSystem.current.IsPointerOverGameObject())
{
    canShoot = false;
    Invoke("AllowCanShoot", fireBreak);
    Attack();
}

推荐阅读