Главная » Статьи » Unity3D Multiplayer

Урок 7. Мультиплеер в StarTrooper. Клиент Сервер. Direct Connect

Прохождение игры saints row.

Наконец, мы реализуем последний тип соединения - Direct Connect. Для этого:

1) Откройте сцену StarTrooper.

2) Создайте новый JavaScript и назовите его ConnectionGUI.

3) Перетащите, ранее созданный, скрипт к главной камере(MainCamera). Введите в скрипте:

  1. var remoteIP = "127.0.0.1";
  2. var remotePort = 25000;
  3. var listenPort = 25000;
  4. var useNAT = false;
  5. var yourIP = "";
  6. var yourPort = "";
  7. function Awake() {
  8. if (FindObjectOfType(MasterServerGUI))
  9. this.enabled = false;
  10. if(FindObjectOfType(UDPConnectionGUI))
  11. this.enabled = false;
  12. }
  13. function OnGUI () {
  14. if (Network.peerType == NetworkPeerType.Disconnected)
  15. {
  16. // Если не соединен
  17. if (GUI.Button (new Rect(10,10,100,30),"Connect"))
  18. {
  19. Network.useNat = useNAT;
  20. // Соединение с сервером
  21. Network.Connect(remoteIP, remotePort);
  22. }
  23. if (GUI.Button (new Rect(10,50,100,30),"Start Server"))
  24. {
  25. Network.useNat = useNAT;
  26. // Создание сервера
  27. Network.InitializeServer(32, listenPort);
  28. // Notify our objects that the level and the network is ready
  29. for (var go : GameObject in FindObjectsOfType(GameObject))
  30. {
  31. go.SendMessage("OnNetworkLoadedLevel",
  32. SendMessageOptions.DontRequireReceiver);
  33. }
  34. }
  35. remoteIP = GUI.TextField(new Rect(120,10,100,20),remoteIP);
  36. remotePort = parseInt(GUI.TextField(new
  37. Rect(230,10,40,20),remotePort.ToString()));
  38. }
  39. else
  40. {
  41. // Если подключен
  42. // Взятие ip address и порта
  43. ipaddress = Network.player.ipAddress;
  44. port = Network.player.port.ToString();
  45. GUI.Label(new Rect(140,20,250,40),"IP Adress: "+ipaddress+":"+port);
  46. if (GUI.Button (new Rect(10,10,100,50),"Disconnect"))
  47. {
  48. // отсоединение
  49. Network.Disconnect(200);
  50. }
  51. }
  52. }
  53. function OnConnectedToServer() {
  54. // Notify our objects that the level and the network is ready
  55. for (var go : GameObject in FindObjectsOfType(GameObject))
  56. go.SendMessage("OnNetworkLoadedLevel",
  57. SendMessageOptions.DontRequireReceiver);
  58. }
  59. function OnDisconnectedFromServer () {
  60. if (this.enabled != false)
  61. Application.LoadLevel(Application.loadedLevel);
  62. else
  63. {
  64. var _NetworkLevelLoad : NetworkLevelLoad =
  65. FindObjectOfType(NetworkLevelLoad);
  66. _NetworkLevelLoad.OnDisconnectedFromServer();
  67. }
  68. }

Теперь можете проверить работоспособность данного скрипта.


Категория: Unity3D Multiplayer | Добавил: Шаке (27.03.2012)
Просмотров: 3326 | Комментарии: 1 | Теги: network, NAT, IP, direct connect, Port, Awake, startrooper, Unity3d, gui, useNat
Всего комментариев: 1
1 defaultNick  
0
Кстати, есть альтернативные сетевые решения. Вот, посмотрите - www.fgs.org.ua.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
/>meta http-equiv=