using System; namespace Gamestrap { /// /// Source: /// Druss Blog /// http://druss.co/2016/04/unity3d-serialize-and-deserialize-system-guid-using-jsonutility/ /// [Serializable] public struct SerializableGuid : IComparable, IComparable, IEquatable { public string Value; private SerializableGuid(string value) { Value = value; } public static implicit operator SerializableGuid(Guid guid) { return new SerializableGuid(guid.ToString()); } public static implicit operator Guid(SerializableGuid serializableGuid) { return new Guid(serializableGuid.Value); } public int CompareTo(object value) { if (value == null) return 1; if (!(value is SerializableGuid)) throw new ArgumentException("Must be SerializableGuid"); SerializableGuid guid = (SerializableGuid)value; return guid.Value == Value ? 0 : 1; } public int CompareTo(SerializableGuid other) { return other.Value == Value ? 0 : 1; } public bool Equals(SerializableGuid other) { return Value == other.Value; } public override bool Equals(object obj) { return base.Equals(obj); } public override int GetHashCode() { return (Value != null ? Value.GetHashCode() : 0); } public override string ToString() { return (Value != null ? new Guid(Value).ToString() : string.Empty); } } }