using System; namespace AlicizaX { /// /// Generates a Unique ID that can be used to identify scripts when saving/loading script state. /// [Serializable] public sealed class UniqueID { public string Id; public UniqueID() { GenerateIfEmpty(); } /// /// Generate an ID only if it's missing. /// public void GenerateIfEmpty() { if (!string.IsNullOrEmpty(Id)) return; Generate(); } /// /// Assign a new random ID and overwrite the previous. /// public void Generate() { Id = GameHelper.GetGuid(); } public static implicit operator string(UniqueID uniqueID) { return uniqueID.Id; } public override string ToString() => Id; } }