unity3d运行后自动暂停_Unity3d 失去获取焦点,暂停

在Unity3d项目中,当应用失去焦点或暂停时,Update方法停止执行,导致监听消息无法及时处理。为解决此问题,可以改用C#直接调用Lua方法来实现OnApplicationFocus和OnApplicationPause事件的处理,从而确保在暂停状态下也能正确处理游戏状态变化。通过调整代码,增加对焦点和暂停事件的响应,确保游戏逻辑的正常运行。
摘要由CSDN通过智能技术生成

目前在用tolua进行项目开发,C#与lua交互的部分消息使用了注册监听处理,监听方法均放到Update方法里面进行处理,问题在于失去焦点后Update方法将不继续执行,这就导致了监听方法未能及时调用。

例如:AB玩家进行纸牌游戏,A接到电话并失去焦点,Update不执行导致消息未能及时通知服务器,此时B未能及时收到A的状态误以为A还在打牌状态。

此外Android Plugins中的UnityPlayer.UnitySendMessage,经测试在强制暂停时,OnPause、OnStop周期中UnitySendMessage无效。(个人未测)

故要特殊处理这两个方法,现改成C#直接调用lua方法,去掉监听推送这一步。C#:

/// 

/// 当程序获得或者是去焦点时

/// 

/// 

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.GetFocusEv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值