Unity3d 失去获取焦点,暂停
2017-10-28 18:07
405 查看
目前在用tolua进行项目开发,C#与lua交互的部分消息使用了注册监听处理,监听方法均放到Update方法里面进行处理,问题在于失去焦点后Update方法将不继续执行,这就导致了监听方法未能及时调用。
例如:AB玩家进行纸牌游戏,A接到电话并失去焦点,Update不执行导致消息未能及时通知服务器,此时B未能及时收到A的状态误以为A还在打牌状态。
此外Android Plugins中的UnityPlayer.UnitySendMessage,经测试在强制暂停时,OnPause、OnStop周期中UnitySendMessage无效。(个人未测)
故要特殊处理这两个方法,现改成C#直接调用lua方法,去掉监听推送这一步。
例如:AB玩家进行纸牌游戏,A接到电话并失去焦点,Update不执行导致消息未能及时通知服务器,此时B未能及时收到A的状态误以为A还在打牌状态。
此外Android Plugins中的UnityPlayer.UnitySendMessage,经测试在强制暂停时,OnPause、OnStop周期中UnitySendMessage无效。(个人未测)
故要特殊处理这两个方法,现改成C#直接调用lua方法,去掉监听推送这一步。
C#: /// <summary> /// 当程序获得或者是去焦点时 /// </summary> /// <param name="focus"></param> public void OnApplicationFocus(bool focus) { try { LuaManager.CallFunc_Void("MineMessageCenter.OnApplicationFocus", focus); } catch (System.Exception) { throw; } //Debug.logger.Log("焦点:" + focus); //if (focus) //{ // MessageCenter.GetInstance().PostEvent(EventNameDefine.GetFocusEvent); //} //else //{ // MessageCenter.GetInstance().PostEvent(EventNameDefine.LostFocusEvent); //} } /// <summary> /// 当程序暂停 /// </summary> /// <param name="focus"></param> public void OnApplicationPause(bool isPause) { try { LuaManager.CallFunc_Void("MineMessageCenter.OnApplicationPause", isPause); } catch (System.Exception) { throw; } //Debug.logger.Log("暂停:" + isPause); //if (isPause) //{ // MessageCenter.GetInstance().PostEvent(EventNameDefine.GetPauseEvent); //} //else //{ // MessageCenter.GetInstance().PostEvent(EventNameDefine.LostPauseEvent); //} }
Lua: --当程序获得或者是去焦点时 function MineMessageCenter.OnApplicationFocus(focus) print("焦点:"..tostring(focus)); end --当程序暂停 function MineMessageCenter.OnApplicationPause(isPause) --print("暂停:"..tostring(isPause)); end
相关文章推荐
- Unity3d:如何让程序在失去焦点时,继续运行,而不是暂停呢?
- textarea 默认文字获取焦点失去焦点
- JS小插件-对输入框获取与失去焦点时的操作
- 文本框特效:获取焦点时自动清除默认文本 失去焦点重新显示默认文字
- Android使listview(GridView) 获取焦点时,选中上次失去焦点时的item,而不是就近的item
- 安卓开发中EditText的焦点改变处理(获取焦点和失去焦点交互变化)
- TextBox.PasswordChar 获取焦点显示可见密码,失去焦点密码不可见
- AngularJs获取焦点与失去焦点时的表单验证
- KindEditor 获取不到内容 失去焦点
- easyui-tabs图标(获取焦点时显示图标,失去焦点时隐藏图标)
- input框获取焦点和失去焦点,select框change事件
- 兼容ie 谷歌 火狐的获取焦点失去焦点方法
- EditText获取和失去焦点,软键盘的关闭,和软键盘的显示和隐藏的监听
- 总结下网上的JS控制密码框获取焦点时文字消失,失去焦点时文字出现的方法
- 点击屏幕其它地方,让EditText失去焦点,并获取EditText输入的类容
- jquery注册文本框获取焦点清空,失去焦点赋值
- C#控件怎样获取,和失去焦点的处理
- jQuery的获取焦点和失去焦点事件
- 关于窗体和控件获取与失去输入焦点的事件
- 启动app ,EditText失去焦点,点击获取焦点