2013-12-11 77 views

回答

4

MonoBehaviours支持兩個有用的鉤子:

OnApplicationFocus將被調用任何時候玩家獲得或失去焦點。

OnApplicationPause將在應用程序暫停或取消暫停時調用。請注意,只有在播放器設置中「後臺運行」爲false,並且大多數代碼執行都會停止,直到應用程序重新獲得焦點爲止。

考慮到上面的注意事項,我通常更喜歡使用OnApplicationFocus,但兩者都可以是有用的,具體取決於你正在嘗試做什麼。

至於處理這些事件,您可以確保每個場景中的某個對象正在偵聽它們。要麼附加一些持久存在於場景之間的單體對象,要麼保持每個場景的對象來適當地處理它們。

Unity的腳本引用提供了這個例子。通過這個腳本安裝到在一些場景中的對象,它會拋出一個GUI消息而本場比賽已失去焦點:

public class Example : MonoBehaviour { 
    public bool paused; 

    void OnGUI() { 
     if (paused) { 
      GUI.Label(new Rect(100, 100, 50, 30), "Game paused"); 
     } 
    } 

    void OnApplicationFocus(bool focusStatus) { 
     paused = focusStatus; 
    } 
} 
1

OnApplicationPause應該是你所需要的。

using UnityEngine; 
using System.Collections; 

public class Example : MonoBehaviour { 
    public bool paused; 
    void OnGUI() { 
     if (paused) 
      GUI.Label(new Rect(100, 100, 50, 30), "Game paused"); 
     } 
    void OnApplicationPause(bool pauseStatus) { 
     paused = pauseStatus; 
    } 
} 

實施例(直接從統一文檔爲可讀性拉動)

相關問題