问题描述
我想在 PUN RPC 参数中使用 vector3d 数据类型,但 Photon 不接受 vector3d。我们需要注册并序列化它以在 RPC 方法中使用。我在序列化代码方面遇到了一些问题。
namespace VoxelPlay
{
internal static class MyCustomDataType
{
internal static void Register()
{
PhotonPeer.RegisterType(typeof(Vector3d),(byte)'V',SerializeVector3d,DeserializeVector3d);
}
public static readonly byte[] memVector3d = new byte[3 * 4];
private static short SerializeVector3d(StreamBuffer outStream,object customobject)
{
Vector3d vo = (Vector3d)customobject;
int index = 0;
lock (memVector3d)
{
byte[] bytes = memVector3d;
Protocol.Serialize(vo.x,bytes,ref index); //Getting error: Cannot convert from double to short
Protocol.Serialize(vo.y,ref index);
Protocol.Serialize(vo.z,ref index);
outStream.Write(bytes,3 * 4);
}
return 3 * 4;
}
private static object DeserializeVector3d(StreamBuffer inStream,short length)
{
Vector3d vo = new Vector3d();
lock (memVector3d)
{
inStream.Read(memVector3d,3 * 4);
int index = 0;
Protocol.Deserialize(out vo.x,memVector3d,ref index);
Protocol.Deserialize(out vo.y,ref index);
Protocol.Deserialize(out vo.z,ref index);
}
return vo;
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)