在光子统一中序列化 Vector3d 数据类型

问题描述

我想在 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 (将#修改为@)