2015-06-12 1 views
0

Я сделал Network C# script в единстве5. Основано на https://vimeo.com/33996023 Все идет хорошо до 30 минут учебника. Я сделал сборку, запустил ее, запустил сервер в сборке, а затем в единстве начал игру, обновил хосты, 1 всплыл сервер, я нажимаю на него, и ничего не происходит, тогда я получаю сообщение: Не удалось подключиться к 10.0.0.100:25001, потому что эта система уже подключена. Это может произойти, если сетевое соединение отключено слишком быстро, чтобы удаленная система получила уведомление об отключении, например, при использовании Network.Disconnect (0).Сеть не может подключиться к серверу C# unity5

Мой сценарий:

public class NetworkManager : MonoBehaviour { 
    public string gameName = "DP_Network_server"; 
    private bool refreshing; 
    private HostData[] hostList; 


    void OnGUI() { 

     if (!Network.isClient && !Network.isServer) { 

      if (GUI.Button (new Rect (10, 10, 150, 100), "Start Server")) { 
       Debug.Log ("Starting Server"); 
       startServer(); 
      } 

      if (GUI.Button (new Rect (10, 200, 150, 100), "Refresh Hosts")) { 
       Debug.Log ("Refreshing"); 
       refreshHostList(); 
      } 

      if (hostList != null) { 
       for (int i = 0; i < hostList.Length; i++) { 

        GUI.Button (new Rect (400, 100 + (110 * i), 300, 100), hostList [i].gameName); 
        Network.Connect (hostList [i]); 

       } 
      } 
     } 
} 

void startServer() { 
    Network.InitializeServer(32, 25001, !Network.HavePublicAddress()); 
    MasterServer.RegisterHost(gameName, "Double Planet Game", "This is test of networking"); 
} 

void OnServerInitialized() 
{ 
    Debug.Log("Server Initializied"); 
} 

void OnMasterServerEvent (MasterServerEvent mse) { 
    if (mse == MasterServerEvent.RegistrationSucceeded) { 
     Debug.Log ("Registered Server");   
    } 
} 

void refreshHostList() { 
    MasterServer.RequestHostList(gameName); 
    refreshing = true; 
    } 

void Update(){ 
    if (refreshing) { 
     if (MasterServer.PollHostList().Length > 0) { 
     refreshing = false; 
      Debug.Log (MasterServer.PollHostList().Length); 
      hostList = MasterServer.PollHostList(); 

     } 

    } 

} 

}

я установить в настройках проекта> игрок играет в фоновом режиме, и я прикрепил представление сети игроку. Что-то не так с Network.Connect (hostList [i]) ;?

ответ

0

Хорошо, я думаю, что есть причина, по которой клиент начинает подключаться к Серверу, но не закончен, он будет продолжать пытаться подключить каждый фрейм, вы можете сделать это только один раз. может быть, вы можете изменить его, как это:

аннулируются OnGUI() {

if (!Network.isClient && !Network.isServer) { 
     if (GUI.Button (new Rect (10, 10, 150, 100), "Start Server")) { 
      Debug.Log ("Starting Server"); 
      startServer(); 
     } 

     if (GUI.Button (new Rect (10, 200, 150, 100), "Refresh Hosts")) { 
      Debug.Log ("Refreshing"); 
      refreshHostList(); 
      if (hostList != null) { 
      for (int i = 0; i < hostList.Length; i++) { 

       GUI.Button (new Rect (400, 100 + (110 * i), 300, 100), hostList [i].gameName); 
       Network.Connect (hostList [i]); 

      } 
     } 
    } 
}