如何防止鼠标单击通过GUI控件并在Unity3D中播放动画 描述

如何防止鼠标单击通过GUI控件并在Unity3D中播放动画 描述,unity3d,Unity3d,大家好,我需要你们的帮助。我遇到了鼠标点击在Unity中通过UI面板的问题,也就是说,我创建了暂停菜单,当我单击恢复按钮时,游戏将取消暂停,玩家将播放不受欢迎的攻击动画。我想要的是,当我单击恢复按钮时,不应播放攻击动画。同样的问题,如果我只是点击面板,不一定是一个按钮,我越是点击UI面板,我退出暂停菜单后播放的攻击动画就越多。此外,我一直在寻找这个问题的解决方案,有人建议我使用事件系统和事件触发器,但由于我对Unity的了解还处于初级阶段,所以我无法正确地实现它。请大家帮帮忙,如果我的英语不清楚

大家好,我需要你们的帮助。我遇到了鼠标点击在Unity中通过UI面板的问题,也就是说,我创建了暂停菜单,当我单击恢复按钮时,游戏将取消暂停,玩家将播放不受欢迎的攻击动画。我想要的是,当我单击恢复按钮时,不应播放攻击动画。同样的问题,如果我只是点击面板,不一定是一个按钮,我越是点击UI面板,我退出暂停菜单后播放的攻击动画就越多。此外,我一直在寻找这个问题的解决方案,有人建议我使用事件系统和事件触发器,但由于我对Unity的了解还处于初级阶段,所以我无法正确地实现它。请大家帮帮忙,如果我的英语不清楚,请原谅。)以下是我使用的代码:

守则:
使用UnityEngine;
使用UnityEngine.EventSystems;
公共课暂停:单一行为{
公共静态bool IsPaused=false;
公共游戏对象暂停;
公共游戏对象玩家;
私人布尔州;
私有void更新(){
//当退出按钮被点击时,游戏必须冻结,暂停菜单必须弹出
if(Input.GetKeyDown(KeyCode.Escape)){
如果(i暂停){
恢复();
}
否则{
暂停();
}
}
}
//恢复按钮的代码
公众简历(){
//有人建议我使用事件系统,但一旦我退出暂停菜单,就不会播放结果攻击动画
if(EventSystem.current.IsPointerOverGameObject()){
Player.GetComponent().ResetTrigger(“攻击”);
}
pauseMenuUI.SetActive(false);
Time.timeScale=1f;
IsPaused=false;
}
//此方法负责冻结游戏并显示UI面板
私有无效暂停(){
pauseMenuUI.SetActive(真);
Time.timeScale=0f;
IsPaused=真;
}
//退出按钮的代码
公共游戏(){
Application.Quit();
}
}

我不确定我是否理解您的问题,但听起来好像在代码的某个地方,当玩家左键单击时,您发起了攻击

现在您的问题是,当播放器单击UI元素时,也会执行此代码,例如,在本例中是“恢复”按钮

你试图解决这个问题,通过重置动画师的攻击触发器,我认为更好的解决方案是阻止攻击开始,而不是稍后尝试重置

如果鼠标位于UI元素上,则EventSystem.current.IsPointerOverGameObject()返回true

因此,您可以使用它修改启动攻击的代码:

... add this check in your code where you want to start the attack
if(EventSystem.current.IsPointerOverGameObject() == false)
{
// add your code to start your attack
}
...

现在,您的攻击只会在您没有超过某个UI元素的情况下开始

您从何处/如何开始攻击?非常感谢您决定提供的帮助,是的,您的解决方案非常有效。再次感谢你