12345678910111213141516171819202122232425262728293031323334 |
- using System;
- using Unity.Netcode;
- //可用于同步的Guid值(客户端)
- public class NetworkGuid : INetworkSerializable
- {
- public ulong FirstHalf;
- public ulong SecondHalf;
- public void NetworkSerialize<T>(BufferSerializer<T> serializer) where T : IReaderWriter
- {
- serializer.SerializeValue(ref FirstHalf);
- serializer.SerializeValue(ref SecondHalf);
- }
- }
- public static class NetworkGuidExtensions
- {
- public static NetworkGuid ToNetworkGuid(this Guid id)
- {
- var networkId = new NetworkGuid();
- networkId.FirstHalf = BitConverter.ToUInt64(id.ToByteArray(), 0);
- networkId.SecondHalf = BitConverter.ToUInt64(id.ToByteArray(), 8);
- return networkId;
- }
- public static Guid ToGuid(this NetworkGuid networkId)
- {
- var bytes = new byte[16];
- Buffer.BlockCopy(BitConverter.GetBytes(networkId.FirstHalf), 0, bytes, 0, 8);
- Buffer.BlockCopy(BitConverter.GetBytes(networkId.SecondHalf), 0, bytes, 8, 8);
- return new Guid(bytes);
- }
- }
|