Beispiel #1
0
    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 + " 场景对象为空!请美术检查资源名称以及配置文件!");
        }
    }
Beispiel #2
0
    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();
            }
        }
    }
Beispiel #3
0
    /// <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();
            }
        }
    }
Beispiel #4
0
 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();
     }
 }
Beispiel #5
0
    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);
            }
        }
    }