我正在尝试制作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");
}
}
}
此外,未来也会采用相同的逻辑。它是否与键输入具有相同的逻辑? 对我有什么建议吗? 非常感谢提前
答案 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内,它知道它是短按立即,如果在这么长时间后仍然保持,它会执行长按动作。