Unity3d OnApplicationPause与OnApplicationFocus
2016-05-05 09:48
357 查看
在手机游戏当中,会碰到“强制暂停”,如:锁屏、接电话或短信之类的。如果“强制暂停”时间过长,网络游戏有时得重新登录等事件。
而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
}
而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
}
相关文章推荐
- 12个优化Unity/GearVR应用的小技巧
- Unity问答系列1
- UNITY3D自学--(一)
- Unity 3d导出安卓版本的详细步骤
- Unity3D+moba+小地图视野
- unity 替换渲染 ( Rendering with Replaced Shaders )
- Unity帧序列实时渲染脚本
- unity3d
- 【翻译】 Unity3D VR 教程:2.开始进行VR开发
- 学习Unity射线的创建使用
- Unity3d中的属性(Attributes)整理
- Unity5.0 AssetBundle 学习心得
- Unity3D——主角面朝方向一定区域内对象角度计算
- 使用Unity3D 自主实战开发的赛车游戏实例,关键点记录 (三)之UI菜单制作
- Unity 3d Shader实践 —— 第一个Shader
- Unity—Android通讯
- Unity3d 数字模型制作规范
- 在Unity中实现TreeView
- Unity GUI内绘制贝塞尔曲线
- UNITY 围绕一个物体做圆周运动