Unity:如何在按下UI按钮时停止使用"Input.GetMouseButton(0)"?

Alp*_*Joe 3 c# unity-game-engine

玩家是一个魔术师,当按下鼠标左键时可以用火球攻击敌人.

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

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

canShoot是一种bool阻止玩家每帧攻击一次的东西.

AllowCanShoot是设定功能canShoottrue.

Attack() 是处理攻击的功能,与此问题无关.

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

我想要的是,他可以按下按钮而不会攻击他.

我不能禁用对玩家的攻击,因为敌人也可以到达交易者,然后玩家可能必须进行战斗.

我尝试的是:

  • 设置canShoot boolfalse,当UI Button按下时,但这不起作用,播放器仍在攻击,也许Update函数在UI Button函数之前执行?!

Pro*_*mer 7

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

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