Обновление данных в unity

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Обновление данных в unity

Сообщение jsbjoker 13 июл 2018, 20:10

Здравствуйте, друзья, столкнулся с такой проблемой. Подключил unity к серверу, отправка данных происходит корректно, а как считать данные никак не могу понять. Создал метод который ждет ответа от сервера, но если я вызываю этот метод через update() то unity при запуске проекта просто виснет и ни на что не реагирует(((
public class Client : MonoBehaviour {

static Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
static MemoryStream ms = new MemoryStream(new byte[256], 0, 256, true, true);
static BinaryWriter writer = new BinaryWriter(ms);
static BinaryReader reader = new BinaryReader(ms);
public InputField text;
public Text showText;
private string message, login, msg;



// Use this for initialization
void Start()
{
Debug.Log("Connecting...");
socket.Connect("192.168.1.18", 9090);
Debug.Log("Connected!");
}

// Update is called once per frame
void Update()
{

showText.text = msg + System.Environment.CommandLine;
}

public void sendMessage()
{
ms.Position = 0;
string myText = text.text;
writer.Write("Unity");
writer.Write(myText);
socket.Send(ms.GetBuffer());
}

public void recieveMessage()
{
ms.Position = 0;
socket.Receive(ms.GetBuffer());
login = reader.ReadString();
message = reader.ReadString();
msg = login + ": " + message;
}
}
jsbjoker
UNец
 
Сообщения: 1
Зарегистрирован: 13 июл 2018, 20:07

Re: Обновление данных в unity

Сообщение Anonymyx 13 июл 2018, 20:52

Так не делается. Обычно для чтения данных создается отдельный поток и в нем в цикле while() ждут сообщение. Так как ReadString() блокирующий метод, главный поток будет заморожен пока не придет сообщение.
Вам надо создать новый поток и в нем запустить метод чтения данных.
Если передача происходит только 1 раз, можно попробовать вызвать метод чтения сразу после отправки данных, т.е. сервер получает сообщение и сразу отправляет ответ. Но опять же это плохая практика.
И сообщения легче передавать в формате JSON, чем последовательно получать сообщения.
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55


Вернуться в Почемучка

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

Сейчас этот форум просматривают: Google [Bot] и гости: 33