【问题标题】:Unity double mouse click input event receiveunity 鼠标双击输入事件接收
【发布时间】:2017-08-26 14:11:12
【问题描述】:

我正在 Unity(版本 5.6.0b3 64 位)中制作 2D 自上而下的射击游戏,但无法正确接收鼠标输入,尤其是鼠标滚轮。

我正在使用鼠标滚轮切换武器。

我在注册鼠标输入时遇到问题。

我的鼠标代码:

if(Input.GetAxis("Mouse ScrollWheel")>0)
{
Debug.Log("Mousewheel Up");
}

if(Input.GetAxis("Mouse ScrollWheel")<0)
{
Debug.Log("Mousewheel Down");
}

在控制台的主菜单中首次启动游戏后,我可以看到它正确检测

但是在开始游戏和加载场景后,它开始表现得很奇怪,并且鼠标滚轮移动了两次:

而且由于这个错误切换武器不能正确工作(它双重切换它,中间缺少一个) 例如我有 3 把武器,从 1 切换到 3。

它还会在 1 次右键单击时产生 2 次爆炸(应该是 1 次)

我不知道发生了什么,感谢每一个帮助。

【问题讨论】:

  • 嘿,你能分享一下鼠标输入的完整脚本吗?
  • 您好,脚本上没有太多鼠标输入。鼠标输入片段与播放器控制器脚本集成。我不认为脚本中的鼠标输入与它有关。我也将每个鼠标按钮都翻了一番。在我的脚本中,我只有鼠标通过屏幕瞄准世界点并射击 if( Input.GetButton("Fire1") && GameController.pause == false && GameController.game == true && GameController.shop == false) { wep.射击(); }

标签: c# unity3d mouseevent mouse mouseclick-event


【解决方案1】:

好的,我在我的脚本中发现了错误(在我发现我可以单击调试日志并跟踪调用之后)我第二次从第二个播放器控制脚本调用我的输入函数(不需要)。问题解决了。

【讨论】:

    【解决方案2】:

    这个问题有点模糊,但我感觉这可能取决于游戏对象的重复。

    也许您的 GameObject(轮询输入)调用了“DontDestroyOnLoad”,而您的游戏场景中有第二个,却忘记从 MainMenu 中删除它。

    【讨论】:

    • 我在一个场景中拥有一切,游戏和菜单。我不在任何地方使用 DontDestroyOnLoad。 “开始游戏”按钮只是重新加载整个场景。
    • 所以在“开始游戏”中,你只是隐藏了菜单,它后面还有游戏吗?您是否正在复制或实例化任何可能意外拥有组件轮询输入副本的 GameObject?
    • 刚刚发现我的错误。从其他脚本第二次调用输入函数。现在像魅力一样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 2012-01-14
    • 2023-04-04
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多