При повторном коннекте к комнате выдаются ошибки

При повторном коннекте к комнате выдаются ошибки

Сообщение liget 05 мар 2013, 09:35

Всем привет,

Наткнулся на проблему.
Использую Photon Cloud.

1) С одного клиента создаю комнату.
2) У него загружается уровень и появляется персонаж
3) Подключаюсь к комнате вторым клиентом.
4) У второго клиента загружается уровень и появляется персонаж.
5) Выключаю второй клиент.
6) Запускаю второй клиент.
7) Подключаюсь к комнате.

После этого уровень загружается, но персонаж не создается. Вываливается 14 ошибок. Первые из них:
1) Received unknown status code: QueueIncomingReliableWarning
2) Cannot send messages when not connected; Either connect to Photon OR use offline mode!

После этого слетают все RPC со второго клиента. У первого все в порядке.
Не понимаю в чем проблема.

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using ExitGames.Client.Photon;

public class NetworkController : Photon.MonoBehaviour {
       
        public string           gameName; //Название комнаты. Если не определяется в редакторе, то при старте присваиваем сами.
        public int                      maxPlayers = 5; // Максимальное количество игроков в комнате
       
        string level = "spaceBox"; // Уровень который загружается при старте
       
        bool drawRoomCreation;
        bool drawRoomsList;
       
        //Определяем размер и положение кнопок
        private float btnX = Screen.width * 0.05f;
        private float btnY = Screen.width * 0.05f;
        private float btnW = Screen.width * 0.2f;
        private float btnH = Screen.width * 0.2f;
       
       
        void OnGUI()
        {
                //Отображаем статус подключения
                GUI.Label (new Rect(Screen.width / 2f, Screen.height / 2f, 150f, 60f), "Connection: " + PhotonNetwork.connected);
                //Отображаем количество игроков в лобби
                GUI.Label (new Rect(Screen.width / 2f, (Screen.height / 2f) + 20, 100f, 60f), "Players in Lobby: " + PhotonNetwork.countOfPlayersOnMaster);
               
                if(!PhotonNetwork.connected){
                        //Рисуем кнопку Connect
                        DrawConnectButton();
                }
                else
                {
                        DrawDisconnectButton();
                        DrawRoomsButtons();
                }
               
                if(drawRoomsList)
                {
                        DrawRoomsList();
                }
               
                if(drawRoomCreation)
                {
                        Debug.Log ("Draw text field");
                        GUI.Box (new Rect(Screen.width / 2, Screen.height / 2, 150, 30), "");
                        gameName = GUI.TextField(new Rect(Screen.width / 2, Screen.height / 2, 150, 30), gameName, 25);
                       
                        if(GUI.Button (new Rect(Screen.width / 2, (Screen.height / 2) + 40, 150, 30), "OK"))
                        {
                                string[] roomProperties = {"map", level};
                                Hashtable customRoomProperties = new Hashtable() {{"map", level}};
                                PhotonNetwork.CreateRoom(gameName, true, true, 20, customRoomProperties, roomProperties);
                        }
                }
               
        }

        void DrawConnectButton ()
        {
                if(GUI.Button(new Rect(Screen.width / 2, (Screen.height / 2) - 60, 150, 60), "Connect to server"))
                {
                        PhotonNetwork.ConnectUsingSettings("v1.0");
                }
        }

        void DrawDisconnectButton ()
        {
                if(GUI.Button(new Rect(Screen.width - 150, (Screen.height / 2) - 60, 150, 60), "Disconnect"))
                {
                        PhotonNetwork.Disconnect();
                }
        }

        void DrawRoomsButtons ()
        {
                if(GUI.Button(new Rect(btnX, btnY, btnW, btnH), "Create Room"))
                {
                        drawRoomCreation = true;
                }
                if(GUI.Button(new Rect(btnX, btnY * 1.2f + btnH, btnW, btnH), "Show availble Rooms"))
                {
                        drawRoomsList = true;
                }
        }
       
        void DrawRoomsList()
        {
                int _a = 0;
               
                foreach(RoomInfo game in PhotonNetwork.GetRoomList())
                {
                        if(GUI.Button(new Rect(30, 15 * _a + 3, 150, 40), game.name))
                        {
                                PhotonNetwork.JoinRoom(game);
                                _a++;
                        }
                }
        }
       
        void OnCreatedRoom()
        {
                Debug.Log ("Room created");
                PhotonNetwork.LoadLevel(level);
        }
       
        void OnJoinedRoom()
        {
                if(PhotonNetwork.connected)
                {
                        PhotonNetwork.RemoveRPCs();
                        PhotonNetwork.LoadLevel(level);
                }
        }
       
        void OnDisconnectedFromPhoton()
        {
               
        }
       
        void OnFailedToConnectToPhoton(object parameters)
        {
               
        }
       
        public void OnMasterClientSwitched(PhotonPlayer player)
        {
               
        }
       
        public void OnReceivedRoomList()
        {
               
        }
       
        public void OnReceivedRoomListUpdate()
        {
               
        }
       
        public void OnConnectedToPhoton()
    {
        Debug.Log("OnConnectedToPhoton");
    }
       
        public void OnFailedToConnectToPhoton()
    {
        Debug.Log("OnFailedToConnectToPhoton");
    }

    public void OnPhotonInstantiate(PhotonMessageInfo info)
    {
        Debug.Log("OnPhotonInstantiate " + info.sender);
    }
       
        // Use this for initialization
        void Start () {
                PhotonNetwork.isMessageQueueRunning = false;
        }
       
        // Update is called once per frame
        void Update () {
                Debug.Log ("Network manager is alive");
        }
}
 
liget
UNIт
 
Сообщения: 55
Зарегистрирован: 05 май 2012, 09:23

Вернуться в Photon

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3