2013-12-11 76 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; 
    } 
} 

实施例(直接从统一文档为可读性拉动)

相关问题