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);
}
}
}
}