有什么解决方案可以检测Unity3D游戏的知名度?特别是在切换到前景/背景时会做一些特定的事情吗?

最佳答案

MonoBehaviours支持两个有用的钩子:

每当玩家获得或失去焦点时,就会调用OnApplicationFocus

每当应用程序暂停或未暂停时,就会调用OnApplicationPause。请注意,只有在播放器设置中“后台运行”为假时才会暂停,并且大多数代码执行将停止,直到应用重新获得焦点。

考虑到上述注意事项,我通常更喜欢使用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;
    }
}

10-08 01:57