我想在触摸屏上长按几秒钟后触发一个事件。 我正在尝试通过以下代码实现此目标。 问题在于,经过的时间在某种程度上是随机的。
private float timePressed = 0.0f;
private float timeLastPress = 0.0f;
public float timeDelayThreshold = 2.0f;
void Update() {
checkForLongPress(timeDelayThreshold);
}
void checkForLongPress(float tim) {
for (int i = 0; i < Input.touchCount; i++)
{
if (Input.GetTouch(0).phase == TouchPhase.Began)
{
// If the user puts her finger on screen...
Debug.Log("Touch start");
timePressed = Time.time - timeLastPress;
}
if (Input.GetTouch(0).phase == TouchPhase.Ended)
{
// If the user raises her finger from screen
timeLastPress = Time.time;
Debug.Log("Releasing Touch");
Debug.Log("Time passed --> " + timePressed);
if (timePressed > tim)
{
Debug.Log("Closing APP");
// Is the time pressed greater than our time delay threshold?
Application.Quit();
}
}
}
}
事实是,这种条件“(timePressed> tim)”从不成立,而且也不理解为什么。
答案 0 :(得分:5)
Time.time
返回The time at the beginning of this frame (Read Only). This is the time in seconds since the start of the game.
。
固定的伪代码:
if (Input.GetTouch(i).phase == TouchPhase.Began)
{
_timePressed = Time.time;
return;
}
if (Input.GetTouch(i).phase == TouchPhase.Ended)
{
var deltaTime = Time.time - _timePressed;
if (deltaTime > _maxTimeTreshold)
{
Application.Quit();
}
}