Ejemplo n.º 1
0
    void Update()
    {
        if (netDiscovery.isClient)
        {
            if (netDiscovery.broadcastsReceived.Count == 0)
            {
                elapsedTime += Time.deltaTime;
                if (elapsedTime > waitSecondsForServer)
                {
                    netDiscovery.StopBroadcast();
                    netDiscovery.StartAsServer();
                    netManager.StartHost();
                    Debug.Log("No hosts were found, setting up as a host.");
                    if (connectingWindow != null)
                    {
                        connectingWindow.SetActive(false);
                    }
                }
            }
            else if (!isConnected)
            {
                var brdReceived = netDiscovery.broadcastsReceived;
                var brdKeys     = brdReceived.Keys.ToArray();
                NetworkBroadcastResult invitation = brdReceived[brdKeys[0]];
                string msg = NetworkDiscovery.BytesToString(invitation.broadcastData);
                Debug.Log("Broadcast from host at " + invitation.serverAddress + " was received: " + msg);
                Debug.Log("Port: " + msg.Split(':')[2]);
                netManager.networkPort    = int.Parse(msg.Split(':').Last()); //NetworkManager:address:port
                netManager.networkAddress = invitation.serverAddress;
                netManager.StartClient();
                isConnected = true;
                netDiscovery.StopBroadcast();
                if (connectingWindow != null)
                {
                    connectingWindow.SetActive(false);
                }
                NetworkManager.singleton.client.RegisterHandler(MsgType.Disconnect, OnNetworkDisconnect);
            }
        }

        if (isConnected && !NetworkManager.singleton.client.handlers.ContainsValue(OnNetworkDisconnect))
        {
            NetworkManager.singleton.client.RegisterHandler(MsgType.Disconnect, OnNetworkDisconnect);
        }
    }