2015-08-08 24 views
1

我創建了一個空閒警告,通知用戶由於不活動,遊戲很快就會重新啓動,但我仍然遇到一個問題 - 只要遊戲重新啓動,定時器就會觸發而不是僅觸發在用戶第一次開始交互之後(首先觸摸屏幕)。我在代碼中缺少什麼?初始互動後開始遊戲定時器

private Vector3 prevMousePosition = Vector3.zero; 
public GameObject timeOutWarning; 

void Start() 
{  
    prevMousePosition = Input.mousePosition; 
} 

void Update() 
{ 
    if(Input.anyKeyDown || Input.mousePosition != prevMousePosition) 
    { 
     StartGameTimer(); 
     timeOutWarning.SetActive(false); 
    } 
    prevMousePosition = Input.mousePosition; 
} 

void StartGameTimer() 
{ 
    CancelInvoke(); 
    Invoke ("ShowRestartWarning", 10); 
} 

void ShowRestartWarning() 
{ 
    timeOutWarning.SetActive(true); 

    Debug.Log ("Restart Warning Popup"); 

    CancelInvoke(); 
    Invoke ("RestartGame", 10); 
} 

void RestartGame() 
{ 
    Debug.Log("Restarting Game Now"); 

    Application.LoadLevel(Application.loadedLevel); 
} 

回答

2

這個問題似乎最有可能成爲你的第一行代碼:

if(Input.anyKeyDown || Input.mousePosition != prevMousePosition) 

第一次你打這一行,prevMousePosition0,0(除非你在其他地方初始化它)。你的鼠標位置不太可能是這樣,所以你會馬上觸發計時器。

這個最明顯的解決方案將是Update之前設置一個有用的值首次調用:

void Start() 
{ 
    previousMousePosition = Input.mousePosition; 
} 
+0

這奏效了,謝謝! – greyBow