protected void TryBindSceneRelation(SceneConfigData _data) { if (_data == null || _data.sceneAsset == null || _data.sceneAsset.gameObjectRelationship == null) { Debug.LogError("The SceneConfigData has some problem , please check it !"); return; } GameObject myScene = GameObject.Find(_data.sceneAsset.sceneName); if (myScene != null) { if (finalObjDic.ContainsKey(_data.sceneAsset.sceneName)) { DestroyImmediate(finalObjDic[_data.sceneAsset.sceneName], true); finalObjDic.Remove(_data.sceneAsset.sceneName); } finalObjDic[_data.sceneAsset.sceneName] = myScene; SceneRoot sr = myScene.GetComponent <SceneRoot>(); if (sr != null) { PlayGameStage s = GameCenter.curGameStage as PlayGameStage; if (s != null) { s.SetSceneEffects(sr); } } ProcessGameObjectRelation(myScene, _data.sceneAsset.gameObjectRelationship); } else { Debug.LogError(_data.sceneAsset.sceneName + " 场景对象为空!请美术检查资源名称以及配置文件!"); } }
public void StartLoadResources(string _sceneName, int _sceneIndex, Action _callBack) { PlayGameStage stage = GameCenter.curGameStage as PlayGameStage; if (stage != null) { StartCoroutine(LoadResources(mainPath, stage.GetEffectPreloadList(), _callBack)); } else { if (_callBack != null) { _callBack(); } } }
/// <summary> /// 开始加载配置数据 /// </summary> /// <param name="_data"></param> /// <param name="_callBack"></param> public void StartLoadConfig(string _sceneName, int _sceneIndex, Action _callBack) { ResourcesTotalCount = 0; ResourcesCurCount = 0; List <string> nullList = new List <string>(); foreach (var item in finalObjDic) { if (item.Value == null) { nullList.Add(item.Key); } } foreach (var item in nullList) { finalObjDic.Remove(item); } PlayGameStage stage = GameCenter.curGameStage as PlayGameStage; if (stage != null) { List <string> wholeNeeds = stage.GetEffectPreloadList(); List <string> needDelete = new List <string>(); List <string> spawnerlist = GameCenter.spawner.effectPoolCacheList; for (int i = 0; i < spawnerlist.Count; i++) { if (!wholeNeeds.Contains(spawnerlist[i])) { needDelete.Add(spawnerlist[i]); } } for (int i = 0; i < needDelete.Count; i++) { GameCenter.spawner.DeleteDefEffecterPool(needDelete[i]); } StartCoroutine(LoadConfig(mainPath, wholeNeeds, _callBack)); } else { if (_callBack != null) { _callBack(); } } }
void Update() { if (startCacuTime > 0 && Time.time - startCacuTime > SystemSettingMng.TIME_OUT_LIMIT) { if (GameCenter.sceneMng != null && GameCenter.sceneMng.EnterSceneSerlizeID > 0) { GameCenter.uIMng.SwitchToUI(GUIType.AUTO_RECONNECT); int sceneID = 0; PlayGameStage stage = GameCenter.curGameStage as PlayGameStage; if (stage != null) { sceneID = stage.SceneID; } if (GameCenter.mainPlayerMng != null && GameCenter.mainPlayerMng.MainPlayerInfo.Level == 1) { LynSdkManager.Instance.ReportConnectionLose(sceneID.ToString(), "1级时有掉线重连!"); } LynSdkManager.Instance.ReportConnectionLose(sceneID.ToString(), "问答号异常,后台回复问答号超时,判断为断线!开启断线重连窗口!"); GameCenter.uIMng.ReleaseGUI(GUIType.PANELLOADING); ClientTip(); GameCenter.msgLoackingMng.CleanSerializeList(); return; } else if (Stage != null && Stage.GetServerInfoSerlizeID > 0) { //NGUIDebug.Log("---wnd"); Stage.TipReLoadServerInfo();//超时弹框 GameCenter.uIMng.ReleaseGUI(GUIType.PANELLOADING); ClientTip(); GameCenter.msgLoackingMng.CleanSerializeList(); return; } if (GameCenter.msgLoackingMng.HasForceSerializeWaiting) { return; } GameCenter.uIMng.ReleaseGUI(GUIType.PANELLOADING); ClientTip(); GameCenter.msgLoackingMng.CleanSerializeList(); } }
protected virtual void UpdateReconnectState(fsm.State _curState) { if (!hasNetClosed) { if (Time.time - startConnectTime >= 1.0f) { GameCenter.loginMng.C2S_ConectQueueServer(GameCenter.loginMng.Quaue_IP, GameCenter.loginMng.Quaue_port); GameCenter.instance.IsReConnecteding = true; if (GameCenter.mainPlayerMng != null && GameCenter.mainPlayerMng.MainPlayerInfo != null) { GameCenter.mainPlayerMng.MainPlayerInfo.CleanBuff(); } hasNetClosed = true; } } else { if (lastConnectState != NetCenter.Connected) { lastConnectState = NetCenter.Connected; if (lastConnectState && GameCenter.loginMng.CurConnectServerType == LoginMng.ConnectServerType.Queue)//连接排队服务器成功,登陆排队服务器,取得角色列表,在loginmng中如果判断是重新连接中,那么自动选择上一次选择的角色登陆 { hasConnectedQueueServer = true; GameCenter.instance.PingTime = 10; GameCenter.loginMng.C2S_Login(); } else if (!lastConnectState && GameCenter.loginMng.CurConnectServerType == LoginMng.ConnectServerType.Queue)//自动选择角色登陆后,会断开排队服务器,此时连接游戏服务器 { if (hasConnectedQueueServer && GameCenter.loginMng.IsActiveDisconnection) { GameCenter.loginMng.C2S_ConectGameServer(); } else { GameCenter.loginMng.C2S_ConectQueueServer(GameCenter.loginMng.Quaue_IP, GameCenter.loginMng.Quaue_port); } } else if (lastConnectState && GameCenter.loginMng.CurConnectServerType == LoginMng.ConnectServerType.Game)//如果游戏服务器连接成功,则进入游戏 { PlayGameStage ps = GameCenter.curGameStage as PlayGameStage; if (ps != null) { GameCenter.instance.PingTime = 10; //链接成功,申请进入游戏 GameCenter.loginMng.C2S_EnterGame(); } } } if (NetCenter.IsConnectedFaild && !GameCenter.loginMng.IsActiveDisconnection) { if (failCount == 0) { failCount++; GameCenter.loginMng.C2S_ConectQueueServer(GameCenter.loginMng.Quaue_IP, GameCenter.loginMng.Quaue_port); } else if (failCount >= 10) { if (failCount == 5) { GameCenter.uIMng.SwitchToUI(GUIType.RECONNECT); GameCenter.uIMng.ReleaseGUI(GUIType.AUTO_RECONNECT); } failCount++; } else { if (closeTime == 0) { NetMsgMng.ConectClose(); closeTime = Time.time; } else if (Time.time - closeTime >= 2) { failCount++; GameCenter.loginMng.C2S_ConectQueueServer(GameCenter.loginMng.Quaue_IP, GameCenter.loginMng.Quaue_port); closeTime = Time.time; } } } } //超过10秒弹出重新连接窗口 ljq if (Time.time - startConnectTimeForConetWnd >= 30) { if (GameCenter.uIMng.CurOpenType != GUIType.RECONNECT) { startConnectTimeForConetWnd = Time.time; GameCenter.uIMng.SwitchToUI(GUIType.RECONNECT); GameCenter.uIMng.ReleaseGUI(GUIType.AUTO_RECONNECT); } } }