有什么解决方案可以检测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;
}
}