区分按键触摸和屏幕触摸

时间:2016-04-20 20:36:53

标签: c# button unity3d touch

我正在玩巫术的简单游戏,玩家触摸屏幕上的任何地方做某事。这是一种反射游戏。同时我在屏幕上有按钮,可以暂停游戏。问题是当我触摸按钮时,游戏同时检测到屏幕触摸,我想避免这种情况。我使用了一个布尔值,我按下按钮但是它仍然无法正常工作 - 在检测到屏幕触摸后,游戏暂停一小部分秒。

我暂停游戏代码:

GameControlerScript:

public static bool isPaused;
public void PauseGame()
    {
        isPaused = true; // this is static
        Time.timeScale = 0.0f;

        //more code here

    }

和我在附加到不同对象的脚本中的触摸检测:

void Update()
    {

        if (((Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) || (Input.GetKeyDown(KeyCode.Space))) && !GameControllerScript.isPaused)
        {
             // code here starts to be executed and then pasues because of timescale
        }

    }

那么有没有办法在检测到scrren touch之前对isPaused布尔值进行更改?

1 个答案:

答案 0 :(得分:2)

检查你的触摸是否在UI元素上然后如果它没有调用你为正常输入调用的任何方法

public void Update()

{
    foreach (Touch touch in Input.touches)
    {
        if (EventSystem.current.IsPointerOverGameObject(touch.fingerId))
        {
            // you touched at least one UI element
            return;
        }
    }

    // you didnt touched any UI element
    // Do Something
}