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