Вопрос-[ответ] по Unity
|
|
QWER56 | Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Вопрос-[Ответ] по Unity3d
База скриптов Unity3d Курс Уроков по Unity 3D от Alcatraz
ConsMark - поисковик по интернет магазинам.
Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54 |
|
| |
PoqXert | Дата: Среда, 09 Апреля 2014, 16:31 | Сообщение # 5821 |
постоянный участник
Сейчас нет на сайте
| Adom, попробуте подключиться в этой игре. Если работает - значит проблема у тебя в коде, если нет - значит проблема в другом.
Расширения для Unity3D Блог программиста - PoqXert.ru
|
|
| |
Adom | Дата: Среда, 09 Апреля 2014, 18:03 | Сообщение # 5822 |
Печенька!
Сейчас нет на сайте
| Стой а как он подключиться ? Добавлено (09.04.2014, 17:45) --------------------------------------------- А все он смог подключится ко мне .. Добавлено (09.04.2014, 17:47) --------------------------------------------- А исходник коннекта есть ? Добавлено (09.04.2014, 18:03) --------------------------------------------- Значит все-таки проблема в скрипте...
|
|
| |
PoqXert | Дата: Четверг, 10 Апреля 2014, 02:34 | Сообщение # 5823 |
постоянный участник
Сейчас нет на сайте
| Цитата Adom ( ) Значит все-таки проблема в скрипте... Ты пытаешься подключиться через IP, а т.к. сервер спрятался за NAT, то не понятно кому эти данные предназначены / к кому надо подключиться. IP надо указывать, если сервер имеет публичный IP. Если же сервер спрятался за NAT, нужно указывать GUID.
Расширения для Unity3D Блог программиста - PoqXert.ru
|
|
| |
Adom | Дата: Четверг, 10 Апреля 2014, 07:36 | Сообщение # 5824 |
Печенька!
Сейчас нет на сайте
| Эмм... И как его нужно использовать ? Добавлено (10.04.2014, 07:36) --------------------------------------------- Как я понял NetworkPlayer.guid- это некий айди игрока ? Ну или индификатор
|
|
| |
PoqXert | Дата: Четверг, 10 Апреля 2014, 08:03 | Сообщение # 5825 |
постоянный участник
Сейчас нет на сайте
| Цитата Adom ( ) И как его нужно использовать ? Без урока разобраться никак? Первый игрок создаёт сервер, через Network.InitializeServer, передавая в третьем параметре !Network.HavePublicAddress. После создания сервера получаем GUID сервера через Network.player.guid. И выводим его в GUI (или ещё куда), чтобы первый игрок мог сообщить его второму игроку. Второй игрок, узнав GUID сервера, подключается к нему через Network.Connect, но вместо Network.Connect(IP, Port), пишим Network.Connect(GUID).
P.S. Подключение через GUID не работает, если сервер не прятался за NAT.
Расширения для Unity3D Блог программиста - PoqXert.ru
Сообщение отредактировал PoqXert - Четверг, 10 Апреля 2014, 08:04 |
|
| |
Adom | Дата: Четверг, 10 Апреля 2014, 08:22 | Сообщение # 5826 |
Печенька!
Сейчас нет на сайте
| Код Network.player.guid=GUID;
Добавлено (10.04.2014, 08:14) --------------------------------------------- ?
Добавлено (10.04.2014, 08:22) --------------------------------------------- Сделал так Код using UnityEngine; using System.Collections;
public class Connect : MonoBehaviour {
public string connectToIP = "127.0.0.1"; public int connectPort = 25001; public string GUID; // Смешанный GUI для сервера и клиента public void OnGUI() { GUI.Label(new Rect(100,100,150,50),GUID); if (Network.peerType == NetworkPeerType.Disconnected) { //Сейчас мы отключены и не являемся клиентом или хостом GUILayout.Label("Connection status: Disconnected");
connectToIP = GUILayout.TextField(connectToIP, GUILayout.MinWidth(100)); connectPort = int.Parse(GUILayout.TextField(connectPort.ToString()));
GUILayout.BeginVertical(); if (GUILayout.Button("Connect as client")) { // Подсоединяемся к "connectToIP" и "connectPort" как клиент // В данном случае игнорируем NAT Network.useNat = !Network.HavePublicAddress(); Network.Connect(GUID); }
if (GUILayout.Button("Start Server")) { // Создаем север с 32 клиентами используя порт "connectPort" // Так же игнорируем NAT Network.useNat = !Network.HavePublicAddress(); Network.InitializeServer(32, connectPort); GUID=Network.player.guid; } GUILayout.EndVertical();
} else { //Мы имеем подключение(я)!
if (Network.peerType == NetworkPeerType.Connecting) { // Статус - пдключение GUILayout.Label("Connection status: Connecting");
} else if (Network.peerType == NetworkPeerType.Client) { // Статус - клиент GUILayout.Label("Connection status: Client!"); GUILayout.Label("Ping to server: " + Network.GetAveragePing(Network.connections[0]));
} else if (Network.peerType == NetworkPeerType.Server) { // Статус - сервер GUILayout.Label("Connection status: Server!"); GUILayout.Label("Connections: " + Network.connections.Length); if (Network.connections.Length >= 1) { GUILayout.Label("Ping to first player: " + Network.GetAveragePing(Network.connections[0])); } }
if (GUILayout.Button("Disconnect")) { Network.Disconnect(200); } }
}
}
Сообщение отредактировал Adom - Четверг, 10 Апреля 2014, 08:22 |
|
| |
PoqXert | Дата: Четверг, 10 Апреля 2014, 08:40 | Сообщение # 5827 |
постоянный участник
Сейчас нет на сайте
| Цитата Adom ( ) Сделал так Сервер увидил свой GUID, сообщил его будущему клиенту... А где клиент его указывает? (Если клиент - редактор, тогда он его может и в инспекторе указать). Если клиент указывает GUID сервера (а не пытается подключиться через пустой GUID), то всё должно работать.
Расширения для Unity3D Блог программиста - PoqXert.ru
|
|
| |
Adom | Дата: Четверг, 10 Апреля 2014, 09:05 | Сообщение # 5828 |
Печенька!
Сейчас нет на сайте
| А где клиент его указывает? (Если клиент - редактор, тогда он его может и в инспекторе указать). Эмм?
|
|
| |
PoqXert | Дата: Четверг, 10 Апреля 2014, 09:12 | Сообщение # 5829 |
постоянный участник
Сейчас нет на сайте
| Цитата Adom ( ) Эмм? У тебя есть пустая строковая переменная GUID, перед коннектом она нигде не изменяется. Т.е. клиент пытается подключиться через пустой GUID.
Расширения для Unity3D Блог программиста - PoqXert.ru
|
|
| |
Adom | Дата: Четверг, 10 Апреля 2014, 09:24 | Сообщение # 5830 |
Печенька!
Сейчас нет на сайте
| PoqXert, Аа извини что туплю ) Добавлено (10.04.2014, 09:24) ---------------------------------------------
Код using UnityEngine; using System.Collections;
public class Connect : MonoBehaviour {
public string connectToIP = "127.0.0.1"; public int connectPort = 25001; public string GUID; // Смешанный GUI для сервера и клиента public void OnGUI() { GUID=Network.player.guid; GUI.Label(new Rect(100,100,150,50),GUID); if (Network.peerType == NetworkPeerType.Disconnected) { //Сейчас мы отключены и не являемся клиентом или хостом GUILayout.Label("Connection status: Disconnected");
connectToIP = GUILayout.TextField(connectToIP, GUILayout.MinWidth(100)); connectPort = int.Parse(GUILayout.TextField(connectPort.ToString()));
GUILayout.BeginVertical(); if (GUILayout.Button("Connect as client")) { // Подсоединяемся к "connectToIP" и "connectPort" как клиент // В данном случае игнорируем NAT Network.useNat =false; Network.Connect(GUID); }
if (GUILayout.Button("Start Server")) { // Создаем север с 32 клиентами используя порт "connectPort" // Так же игнорируем NAT Network.useNat = !Network.HavePublicAddress(); Network.InitializeServer(32, connectPort); GUID=Network.player.guid; } GUILayout.EndVertical();
} else { //Мы имеем подключение(я)!
if (Network.peerType == NetworkPeerType.Connecting) { // Статус - пдключение GUILayout.Label("Connection status: Connecting");
} else if (Network.peerType == NetworkPeerType.Client) { // Статус - клиент GUILayout.Label("Connection status: Client!"); GUILayout.Label("Ping to server: " + Network.GetAveragePing(Network.connections[0]));
} else if (Network.peerType == NetworkPeerType.Server) { // Статус - сервер GUILayout.Label("Connection status: Server!"); GUILayout.Label("Connections: " + Network.connections.Length); if (Network.connections.Length >= 1) { GUILayout.Label("Ping to first player: " + Network.GetAveragePing(Network.connections[0])); } }
if (GUILayout.Button("Disconnect")) { Network.Disconnect(200); } }
}
} ?
|
|
| |
PoqXert | Дата: Четверг, 10 Апреля 2014, 09:39 | Сообщение # 5831 |
постоянный участник
Сейчас нет на сайте
| Цитата Adom ( ) ? Будущий клиент сохраняет в GUID свой guid (которого у него нет, т.к. он не подключен). И зачем? Он сам к себе потом подключиться хочет, или он всё-таки планирует подключиться к серверу? В OnGUI() вставь GUID = GUILayout.TextField(GUID); (или измени поле, которое для IP).
Расширения для Unity3D Блог программиста - PoqXert.ru
|
|
| |
Adom | Дата: Четверг, 10 Апреля 2014, 09:55 | Сообщение # 5832 |
Печенька!
Сейчас нет на сайте
| Код using UnityEngine; using System.Collections;
public class Connect : MonoBehaviour {
public string connectToIP = "127.0.0.1"; public int connectPort = 25001; public string GUID; // Смешанный GUI для сервера и клиента public void OnGUI() { GUI.Label(new Rect(100,100,150,50),GUID); if (Network.peerType == NetworkPeerType.Disconnected) { //Сейчас мы отключены и не являемся клиентом или хостом GUILayout.Label("Connection status: Disconnected");
GUID = GUILayout.TextField(GUID);
GUILayout.BeginVertical(); if (GUILayout.Button("Connect as client")) { // Подсоединяемся к "connectToIP" и "connectPort" как клиент // В данном случае игнорируем NAT Network.useNat=true; Network.Connect(GUID); }
if (GUILayout.Button("Start Server")) { // Создаем север с 32 клиентами используя порт "connectPort" // Так же игнорируем NAT Network.useNat = !Network.HavePublicAddress(); Network.InitializeServer(32, connectPort); GUID=Network.player.guid; } GUILayout.EndVertical();
} else { //Мы имеем подключение(я)!
if (Network.peerType == NetworkPeerType.Connecting) { // Статус - пдключение GUILayout.Label("Connection status: Connecting");
} else if (Network.peerType == NetworkPeerType.Client) { // Статус - клиент GUILayout.Label("Connection status: Client!"); GUILayout.Label("Ping to server: " + Network.GetAveragePing(Network.connections[0]));
} else if (Network.peerType == NetworkPeerType.Server) { // Статус - сервер GUILayout.Label("Connection status: Server!"); GUILayout.Label("Connections: " + Network.connections.Length); if (Network.connections.Length >= 1) { GUILayout.Label("Ping to first player: " + Network.GetAveragePing(Network.connections[0])); } }
if (GUILayout.Button("Disconnect")) { Network.Disconnect(200); } }
}
} Вот что получилось в итоге.... Вот только результата ноль (
|
|
| |
PoqXert | Дата: Четверг, 10 Апреля 2014, 10:17 | Сообщение # 5833 |
постоянный участник
Сейчас нет на сайте
| А ты GUID вводишь, когда к серверу подключаешься?
Расширения для Unity3D Блог программиста - PoqXert.ru
|
|
| |
Adom | Дата: Четверг, 10 Апреля 2014, 10:19 | Сообщение # 5834 |
Печенька!
Сейчас нет на сайте
| PoqXert, Да Добавлено (10.04.2014, 10:19) --------------------------------------------- На сервере GUID написан а я на клиенте его ввожу и клацаю Connect
|
|
| |
PoqXert | Дата: Четверг, 10 Апреля 2014, 10:30 | Сообщение # 5835 |
постоянный участник
Сейчас нет на сайте
| NAT Facilitator Unity не доступен (как и мастер сервер). Поэтому не работает. Подожди пока начнёт работать (или свой запусти), потом проверишь.
Расширения для Unity3D Блог программиста - PoqXert.ru
|
|
| |
Adom | Дата: Четверг, 10 Апреля 2014, 10:32 | Сообщение # 5836 |
Печенька!
Сейчас нет на сайте
| PoqXert, Эмм и из-за этого были все проблемы ? А тогда как твой работает ? ааа у тебя наверное свой мастер сервер есть ?
|
|
| |
PoqXert | Дата: Четверг, 10 Апреля 2014, 10:42 | Сообщение # 5837 |
постоянный участник
Сейчас нет на сайте
| Цитата Adom ( ) Эмм и из-за этого были все проблемы ? Из-за этого проблемы подключени через GUID (по IP ты и при доступном NAT Facilitator не мог подключиться). Цитата Adom ( ) А тогда как твой работает ? ааа у тебя наверное свой мастер сервер есть ? Есть. Но демка работает через стандартный Мастер Сервер, поэтому она сейчас не работает.
Расширения для Unity3D Блог программиста - PoqXert.ru
|
|
| |
Adom | Дата: Четверг, 10 Апреля 2014, 10:44 | Сообщение # 5838 |
Печенька!
Сейчас нет на сайте
| PoqXert,Ааа... А сколько тогда ждать?
|
|
| |
PoqXert | Дата: Четверг, 10 Апреля 2014, 10:51 | Сообщение # 5839 |
постоянный участник
Сейчас нет на сайте
| Цитата Adom ( ) А сколько тогда ждать? Этого никто не знает, может 3 часа, а может и неделю.
Расширения для Unity3D Блог программиста - PoqXert.ru
|
|
| |
Adom | Дата: Четверг, 10 Апреля 2014, 10:57 | Сообщение # 5840 |
Печенька!
Сейчас нет на сайте
| PoqXert, Воу ..... Тогда проще с Мастер Сервером ) Добавлено (10.04.2014, 10:57) --------------------------------------------- А хоть скрипт нормально сделал ?
|
|
| |