【问题标题】:Unity c: How to tell if the key of a specific int you stored as a variable has been pressedUnity c:如何判断您存储为变量的特定int的键是否已被按下
【发布时间】:2016-11-04 15:22:41
【问题描述】:

这是我的武器装备系统,但我不知道如何检查我是否被按下。

for (int i = 0; i < gunController.Guns.Length; i++) {
            if (Input.GetKeyDown(i)) {
                gunController.EquipWeapon(gunController.Guns[i]);
            }

        }

【问题讨论】:

  • 那么当你使用这段代码时会发生什么?
  • 什么变量存储密钥?目前没有存储任何关键信息的变量
  • 我不使用 Unity,但基于此 docs.unity3d.com/ScriptReference/Input.GetKeyDown.html 你应该尝试 if (Input.GetKeyDown(i.ToString()))
  • 感谢 chronos 会尝试.. 顺便说一句,程序员 i 是变量
  • 您真的应该查看Input Manager 来创建像“Weapon0”和“Weapon1”这样的可二进制名称,这将使您的游戏用户重新绑定密钥变得更加容易,它还支持更轻松地使用游戏手柄(您可以使用单个 Input.GetButtonDown("Weapon0"),它可以在一次调用中同时检查键盘和游戏手柄上的按钮)。

标签: c# unity3d


【解决方案1】:

根据Unity Docs (for Unity3D 5.4)InputGetKeyDown函数有两个重载:

  1. Input.GetKeyDown(string name) 其中name 是被按下的键的名称
  2. Input.GetKeyDown(KeyCode key) 其中key 是键的 KeyCode 枚举值。

注意:第二个重载 (Input.GetKeyDown(KeyCode key)) 是最佳实践。

基本上,不存在具有 int 作为参数的重载。 iint

您可以通过使用 Guns 及其各自的 KeyCodes 或 strings 创建一个数组/字典/列表(或其他东西)来解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 2019-09-07
    相关资源
    最近更新 更多