如何在统一中获得两个相同的输入?

时间:2014-07-04 03:35:44

标签: c# unity3d

我正在尝试制作Android游戏但现在正在使用输入键进行测试。 我想要做的就是让#34;正确"键两次但不确定如何。 这是我的代码:

void Update () {
    if(Input.GetKeyDown("left"))
    {
        Debug.Log("in the left zone");
        isLeft = true;
    }
    if(Input.GetKeyDown("right"))
    {
        isRight = true;

        if(Input.GetKeyDown("right"))
        {
            isDoubleRight = true;
            isRight = false;
            Debug.Log("in the double right zone");
        }
    }
}

此外,未来也会采用相同的逻辑。它是否与键输入具有相同的逻辑? 对我有什么建议吗? 非常感谢提前

2 个答案:

答案 0 :(得分:0)

我自己解决了,但不确定它是否正确。希望这有助于某人。

    if(Input.GetKeyDown("right") && isRight)
    {
        isDoubleRight = true;
        isRight = false;
        Debug.Log("in the double right zone");
    }
    else if(Input.GetKeyDown("right"))
    {
        isRight = true;
    }

答案 1 :(得分:0)

首先

你自己的答案没有检测到"双击" ......它只是在第二次新闻中切换变量。

纠正双击的代码是:

using UnityEngine;
using System.Collections;

public class ButtonTest : MonoBehaviour {

    float timeOut = 0.25f;
    float timeLimit; // the latest time a double-press can be made
    string lastButton; // the name of the button last checked

    // an example of using "CheckDouble" is in here
    void Update (){
        if (Input.GetKeyDown("right")) CheckDouble("right");
    }

    // The function to check for double-presses of a given button
    bool CheckDouble (string newButton) {
        // if new button press is the same as last, AND recent enough
        if(newButton==lastButton && Time.time<timeLimit )
        {
            timeLimit=Time.time; // expires the double-press
            Debug.Log("Double Press");
            return true;
        }
        else
        {
            timeLimit = Time.time+timeOut; // set new Limit for double-press
            lastButton = newButton; // for future checks
            Debug.Log("Single Press (so far)");
            return false;
        }
    }
}

此功能与触摸/点击类似,但请记住:
 就像这个函数检查它是每次按下的BUTTON一样......你还需要传递它触摸/点击的内容和比较 - 检查某人是否只是单击/点击一个项目,然后在不久之后单击或点击不同的项目


进一步的建议:

从某些东西获得两个相同的输入(称为重载)
系统(如android)有时会使用&#34; Long Presses&#34; (点击+按住)而不是双击,我将解释原因:
 想想桌面操作系统
 1.第一次点击&#34;通常只是选择一些东西,或插入一个(有时是假想的)光标。
 2.&#34;第二次点击&#34;启动项目,突出显示单词,切换窗口等 关键是,&#34;首先点击&#34;仍然总是发生

为什么?

因为否则每次你点击ONCE(也许你在键盘上打字,或者只想选择一件事),它必须等待,看看你是否要在采取行动之前双击单击一下。 (反应迟钝)

相反
 有些系统使用长按。一旦按键/触摸被释放(onKeyUp / GetKeyUp);如果它在timeOut内,它知道它是短按立即,如果在这么长时间后仍然保持,它会执行长按动作。