Я работаю над написанием пользовательского класса сетевых сообщений, который наследует от MessageBase , переопределяя его функции ' Serialize и Deserialize .
Я хотел бы иметь возможность отправить IP-адрес игрока в этом сообщении. Для этого я устанавливаю свойство SpawnMessage.Address для client.connection.address из внешнего класса (оба являются строковыми типами).
Однако, когда я сериализую -> Отправить -> десериализовать это сообщение, я получаю бессмысленные строки из моего NetworkReader для ipaddress, когда я ожидаю "localServer" в этом конкретном примере.
Куда я иду не так? И есть ли потенциально лучший способ сделать это?
public class LineObjectMessage : MessageBase
{
public LineSpawn SpawnMessage = new LineSpawn();
public override void Serialize(NetworkWriter writer)
{
writer.StartMessage(NetworkMessageTypes.LineObjectSpawnMessage);
writer.Write(SpawnMessage.IpAddress);
writer.Write(SpawnMessage.NetId);
writer.Write(SpawnMessage.Thickness);
writer.FinishMessage();
}
public override void Deserialize(NetworkReader reader)
{
SpawnMessage = new LineSpawn();
SpawnMessage.IpAddress = reader.ReadString();
SpawnMessage.NetId = reader.ReadNetworkId();
SpawnMessage.Thickness = reader.ReadDouble();
}
[Serializable]
public partial class LineSpawn
{
public string IpAddress;
public double Thickness;
public NetworkInstanceId NetId;
}
}