После неудач со стандартным юнитивским нетворком, я решил попробовать фотон
В игре у меня передаются и принимаются команды через stream
Есть 2 условно говоря игрока: main и opponent, которые спаунятся через PhotonNetwork.Instntiate
В main мы пишем значение через игровой менеджер, а из оппонентa только читаем
То есть, выполняется вот такой код
на отправителе
stream.SendNext(command);
if (command == 7)
{
stream.SendNext(turnInfo.moveCell.x);
stream.SendNext(turnInfo.moveCell.y);
}
и на получателе
if (command == 7)
{
int x = (int)stream.ReceiveNext();
int y = (int)stream.ReceiveNext();
turnInfo.moveCell=new Vector2Int(x,y);
Все работает вроде нормально. Армии подгружает как надо. Ходы переключает. Но иногда туда передается какая-то фигня, которая берется непонятно откуда. Допустим в поле 8х7 откуда-то в оппоненте берется turnInfo.moveCell.x=40
Пробовал преобразовать битконвертером Vector2Int в массив байтов - все равно принимает какую-то лажу.
Пробовал отправлять сообщения через RaiseEvent, куда добавлял сконвертированый Vector2Int – не лучше
Причем я сделал так, что Эвент отправляется всем (в том числе и отправителю). А отправляется только владельцем. По идеи, если бы он отправил бы лажу, то всем бы пришла лажа, в том числе и ему. Но нет. После отправки все нормально. А другой клиент получает случайную лажу, как получал.Добавлено (03 Июня 2020, 17:20)
---------------------------------------------
Короче, не выпендривайтесь, и работайте через эвенты в одном объекте, а не в двух одинаковых.