在手机游戏其中,会碰到“强制暂停”,如:锁屏、接电话或短信之类的。假设“强制暂停”时间过长,网络游戏有时得又一次登录等事件。
而Unity3d。Android Plugins中的UnityPlayer.UnitySendMessage,经測试在强制暂停时,OnPause、OnStop周期中UnitySendMessage无效。
重点探索OnApplicationPause和OnApplicationFocus;
OnApplicationPause,当程序暂停;
OnApplicationFocus,当程序获得或失去焦点。
经測试:
强制暂停时,先 OnApplicationPause。后 OnApplicationFocus;
又一次“启动”手机时,先OnApplicationFocus,后 OnApplicationPause;
思路:
1,定义两个bool
isPause=false;
isFocus=false;
在
OnEnable();初始化:
void OnEnable(){
isPause=false;
isFocus=false;
}
void OnApplicationPause(){
#if UNITY_IPHONE || UNITY_ANDROID
Debug.Log("OnApplicationPause "+isPause+" "+isFocus);
if(!isPause)
{
// 强制暂停时。事件
pauseTime();
}
else
{
isFocus=true;
}
isPause=true;
#endif
}
void OnApplicationFocus(){
#if UNITY_IPHONE || UNITY_ANDROID
Debug.Log("OnApplicationFocus "+isPause+" "+isFocus);
if(isFocus)
{
// “启动”手机时。事件
resumeList();
isPause=false;
isFocus=false;
}
if(isPause)
{
isFocus=true;
}
#endif
}