我正在製作一個簡單的遊戲,一個玩家觸摸屏幕上的任何地方做某件事。這是一種反射遊戲。同時我在屏幕上有按鈕可以暫停遊戲。問題是,當我觸摸按鈕時,遊戲會同時檢測到屏幕觸摸,我想避免這種情況。我使用了一個按鈕按下時更改的布爾值,但它仍然無法正常工作 - 在檢測到屏幕觸摸後,遊戲僅暫停一秒。區分按鈕觸摸和屏幕觸摸
我暫停遊戲代碼:
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
}
}
那麼,有沒有一種方法,使獲得前變向isPaused得到布爾它檢測到觸摸?
是同一類/遊戲對象這兩個函數呢?因爲你可以添加一個文本,如果isPaused == true它只是返回;所以下一個代碼不會被執行......我錯過了什麼? –
這就是兩個代碼都附加到不同的對象的東西。首先是一種遊戲管理器的腳本,它持有一種遊戲邏輯,第二種遊戲附屬於在遊戲過程中實例化的物品(但始終只有這種類型)。如果它是一個gameobject,我會將所有腳本放到一個腳本中,並用簡單的布爾值來管理,但在這種情況下,如果您有一個遊戲管理器對象(假設它有一個名爲GameManager的組件,並且該組件內部存在isPaused布爾值,則不是這種情況下 –
)。使布爾非靜態和公共,然後你可以通過其他對象使用GameObject.Find(「遊戲經理」)訪問它。GetComponent().isPaused –