private void ClearScene() { AtlasSpriteManager.Instance.ClearCache(); CoreEntry.gSceneMgr.ClearPools(MapMgr.Instance.GetCurSceneID()); CoreEntry.gObjPoolMgr.ReleaseObjectPool(); CoreEntry.gGameObjPoolMgr.ClearPool(); FlyAttrManager.CloseAllFlyAttr(); CoreEntry.gResLoader.ClearPrefabs(); bool cache = true; Scene cur = SceneManager.GetActiveScene(); if (cur.name.Equals("RoleUI")) { cache = false; } LoadModule.Instance.Clear(cache); }
/// <summary> /// 更新属性。 /// </summary> /// <param name="attrs">属性列表。</param> public virtual void OnUpdateAttr(List <MsgData_sClientAttr> attrs) { //Debug.Log("OnUpdateAttr 0"); //用于判断血量或战力是否发生变化 long oldhp = mBasicAttr.CurHP; long oldmaxhp = mBasicAttr.MaxHP; long oldpower = mBasicAttr.Power; double fOldPower = mBasicAttr.GetBasicAttrValue((int)BasicAttrEnum.Power); int oldlevel = mBasicAttr.Level; long oldExp = mBasicAttr.Exp; bool currencychange = false; int oldJingJieLv = mBasicAttr.JingJieLevel; long oldJingJieExp = mBasicAttr.JingJieExp; int oldVip = mBasicAttr.VIPLevel; double[] oldattr = mInit ? FlyAttrManager.GetShowAttr(mBasicAttr.Attrs) : null; //没进场不飘字 for (int i = 0; i < attrs.Count; ++i) { MsgData_sClientAttr ca = attrs[i]; BasicAttrEnum type = BaseAttr.GetBasicAttrTypeFromStatType(ca.AttrType); if (type != BasicAttrEnum.Unkonw) { mBasicAttr.SetBasicAttrValue((int)type, ca.AttrValue); continue; } int currencytype = CurrencyType.GetCurrencyTypeFromStatType(ca.AttrType); if (currencytype != -1) { SetCurrency(currencytype, (long)ca.AttrValue); currencychange = true; if (currencytype == CurrencyType.CURRENCY_TYPE_UNBIND_MONEY) { Account.Instance.isRecharging = false; //充值钻石完成 } continue; } } if (oldVip != mBasicAttr.VIPLevel) { if (CoreEntry.gActorMgr.MainPlayer != null) { if (CoreEntry.gActorMgr.MainPlayer.mBaseAttr != null) { CoreEntry.gActorMgr.MainPlayer.mBaseAttr.VIPLevel = mBasicAttr.VIPLevel; CoreEntry.gActorMgr.MainPlayer.Health.OnLordChange(); } } CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_PLAYER_VIP, EventParameter.Get()); //Debug.Log("OnUpdateAttr 1"); } if (oldhp != mBasicAttr.CurHP || oldmaxhp != mBasicAttr.MaxHP) { CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_PLAYER_HP, EventParameter.Get()); //Debug.Log("OnUpdateAttr 2"); } if (oldpower != mBasicAttr.Power) { long powerDiff = (long)(mBasicAttr.GetBasicAttrValue((int)BasicAttrEnum.Power) - fOldPower); long powerDiffInt = mBasicAttr.Power - oldpower; oldpower = oldpower - (powerDiff - powerDiffInt); EventParameter ep = EventParameter.Get(); ep.longParameter = oldpower; ep.longParameter1 = mBasicAttr.Power; CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_PLAYER_POWER, ep); Debug.Log("OnUpdateAttr 3"); } if (oldlevel != mBasicAttr.Level) { CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_PLAYER_INFO, EventParameter.Get()); //Debug.Log("OnUpdateAttr 4"); if (oldlevel != 0) { CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_PLAYER_LV, EventParameter.Get(oldlevel)); //Debug.Log("OnUpdateAttr 5"); } } if (currencychange) { //注意,大量丢金币变化通知,卡CPU CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_PLAYER_CURRENCY, EventParameter.Get()); //Debug.Log("OnUpdateAttr 6"); } if (oldlevel != mBasicAttr.Level || oldExp != mBasicAttr.Exp) { EventParameter parameter = EventParameter.Get(); parameter.intParameter = oldlevel; parameter.longParameter = oldExp; CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_PLAYER_EXP, parameter); //Debug.Log("OnUpdateAttr 7"); } if (oldJingJieLv != mBasicAttr.JingJieLevel) { CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_PLAYER_JINGJIE_LV, EventParameter.Get(oldJingJieLv)); //Debug.Log("OnUpdateAttr 8"); } if (oldJingJieLv != mBasicAttr.JingJieLevel || oldJingJieExp != mBasicAttr.JingJieExp) { EventParameter parameter = EventParameter.Get(); parameter.intParameter = oldJingJieLv; parameter.longParameter = oldJingJieExp; CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_PALYER_JINGJIE_EXP, parameter); //Debug.Log("OnUpdateAttr 9"); } if (oldattr != null) { double[] newattr = FlyAttrManager.GetShowAttr(mBasicAttr.Attrs); EventParameter ep = EventParameter.Get(); ep.objParameter = oldattr; ep.objParameter1 = newattr; CoreEntry.gEventMgr.TriggerEvent(GameEvent.GE_FLY_ATTR, ep); //Debug.Log("OnUpdateAttr 10"); } }
public override void InitializeSrv() { flyAttr = this; CoreEntry.gEventMgr.AddListener(GameEvent.GE_FLY_ATTR, OnGameEventAttrChange); }