using System.Collections; using System.Collections.Generic; using UnityEngine; using System; namespace ZXL.ID { /// /// 生成全局唯一ID(设备的唯一识别符+通过系统时间+int的最大值和最小值随机取值) /// public static class GenerateGlobalID { /// /// ID存储 /// private static List list_ID = new List(); /// /// 当前最新的ID /// private static string id; private static List list_Int_ID = new List(); private static int int_Id; /// /// 生成ID逻辑(使用递归生成全局唯一ID) /// private static void Generate() { id = SystemInfo.deviceUniqueIdentifier + DateTime.Now + UnityEngine.Random.Range(int.MinValue, int.MaxValue); while (list_ID.Contains(id)) { Generate(); } list_ID.Add(id); } private static void GenerateInt() { int_Id = UnityEngine.Random.Range(int.MinValue, int.MaxValue); while (list_Int_ID.Contains(int_Id)) { GenerateInt(); } list_Int_ID.Add(int_Id); } public static int GenerateIntID() { int id = UnityEngine.Random.Range(int.MinValue, int.MaxValue); while (list_Int_ID.Contains(id)) { Generate(); } return id; } /// /// 生成ID /// /// 返回生成好的ID public static string GenerateID() { Generate(); return id; } /// /// 移除ID(假回收ID重复使用) /// /// 需要移除的ID public static void RemoveID(string id) { if (list_ID.Contains(id)) { list_ID.Remove(id); } } } }