/// <summary>
        /// 断开与战斗服的连接
        /// </summary>
        public void DisConnectFightServer()
        {
            Player player = UnitManager.Instance.GetPlayerByIdx(m_char_idx);

            if (player == null)
            {
                return;
            }

            if (player.fs_uid > 0 && m_connect_state == eFSConnectState.Connected)
            {
                //告诉fs
                ss2fs.LogoutClient fs_msg = PacketPools.Get(ss2fs.msg.LOGOUT_CLIENT) as ss2fs.LogoutClient;
                fs_msg.char_idx = m_char_idx;
                ServerNetManager.Instance.Send2FS(player.fs_uid, fs_msg);

                //告诉gs分配给玩家的fs
                ss2gs.NotifyServer gs_msg = PacketPools.Get(ss2gs.msg.NOTIFY_SERVER) as ss2gs.NotifyServer;
                gs_msg.account_idx = player.account_idx;
                gs_msg.s_type      = eServerType.FIGHT;
                gs_msg.fs_uid      = 0;
                ServerNetManager.Instance.Send(player.client_uid.srv_uid, gs_msg);

                m_connect_state = eFSConnectState.UnConnect;
            }
        }
        /// <summary>
        /// 处理登出逻辑
        /// </summary>
        private void HandleLogoutAccount(long account_idx)
        {
            Player player = UnitManager.Instance.GetPlayerByAccount(account_idx) as Player;

            if (player == null)
            {//如果在加载完角色信息前退出,则不会有unit
                return;
            }

            //告诉fs
            ss2fs.LogoutClient fs_msg = PacketPools.Get(ss2fs.msg.LOGOUT_CLIENT) as ss2fs.LogoutClient;
            fs_msg.char_idx = player.char_idx;
            ServerNetManager.Instance.Send2FS(player.fs_uid, fs_msg);

            //告诉ws
            ss2ws.LogoutClient ws_msg = PacketPools.Get(ss2ws.msg.LOGOUT_CLIENT) as ss2ws.LogoutClient;
            ws_msg.char_idx = player.char_idx;
            ServerNetManager.Instance.Send2WS(ws_msg);

            //告诉gl
            ss2gl.LogoutClient gl_msg = PacketPools.Get(ss2gl.msg.LOGOUT_CLIENT) as ss2gl.LogoutClient;
            gl_msg.char_idx = player.char_idx;
            ServerNetManager.Instance.Send2GL(gl_msg);

            //从场景移除
            BaseScene scene = SceneManager.Instance.GetScene(player.scene_obj_idx);

            if (scene != null)
            {
                scene.RemoveUnit(player);
            }
            //从管理器移除
            UnitManager.Instance.RemoveUnit(player);
        }
 /// <summary>
 /// 账号登出
 /// </summary>
 private void OnLogoutAccount(PacketBase packet)
 {
     ss2fs.LogoutClient msg = packet as ss2fs.LogoutClient;
     UnitManager.Instance.HandleLogout(msg.char_idx);
     Log.Debug("玩家离开游戏:" + msg.char_idx);
 }