在Unity中检测applicationDidBecomeActive的时间?

时间:2016-02-26 22:47:42

标签: c# unity3d

我们正在尝试检测应用程序在处于后台模式后何时再次处于活动状态,我们希望能够在发生这种情况时触发方法。这是一个如此简单的想法:甚至还有一个MonoBehavour方法OnApplicationPause可用作应用程序进入后台模式,但不适用于“OnApplicationResume”。

1 个答案:

答案 0 :(得分:2)

刚试过OnApplicationFocus,它运作正常。

bool initialFocus;


void OnApplicationFocus(bool focusStatus)
{
    if (focusStatus)
    {
        //App became active, will fire on application first focus
    }

    if (focusStatus && initialFocus)
    {
        //App became active, after it's been inactive at least once
    }

    initialFocus = initialFocus || focusStatus;
}

此外,在您的问题中,您会询问OnApplicationPause

请注意,实际上OnApplicationPause以相同的方式检测到暂停和取消暂停 - 它将bool作为参数。

void OnApplicationPause(bool p)
  {
  Debug.Log("the app just " + (p?"paused":"antipaused"));
  }

在实践中,"暂停"和#34;焦点"是非常微妙的,取决于你在哪个平台。在实践中,您必须 在项目中仔细尝试 并确定您的行为。这真的很痛苦。

另请注意,OnApplicationQuit在移动平台上毫无意义。