WaiXie_QuestionSystem/Assets/Script/GenerateID/GenerateGlobalID.cs

85 lines
2.1 KiB
C#
Raw Normal View History

2023-12-10 12:28:20 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
namespace ZXL.ID
{
/// <summary>
/// 生成全局唯一ID设备的唯一识别符+通过系统时间+int的最大值和最小值随机取值
/// </summary>
public static class GenerateGlobalID
{
/// <summary>
/// ID存储
/// </summary>
private static List<string> list_ID = new List<string>();
/// <summary>
/// 当前最新的ID
/// </summary>
private static string id;
private static List<int> list_Int_ID = new List<int>();
private static int int_Id;
/// <summary>
/// 生成ID逻辑使用递归生成全局唯一ID
/// </summary>
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;
}
/// <summary>
/// 生成ID
/// </summary>
/// <returns>返回生成好的ID</returns>
public static string GenerateID()
{
Generate();
return id;
}
/// <summary>
/// 移除ID假回收ID重复使用
/// </summary>
/// <param name="id">需要移除的ID</param>
public static void RemoveID(string id)
{
if (list_ID.Contains(id))
{
list_ID.Remove(id);
}
}
}
}