随机 UserId 生成函数
Unity 随机UserId生成函数
我需要生成一个固定格式的UserId:2位小写字母(a-z) + 4位数字(0000-9999),随便编写了一个可直接在Unity中使用的C#函数。
完整代码
using UnityEngine;
public static class UserIdGenerator
{
/// <summary>
/// 生成随机UserId:2位小写字母 + 4位数字
/// </summary>
/// <returns>格式如:ab1234、xz0001、qy9876</returns>
public static string GenerateRandomUserId()
{
// 1. 生成2个随机小写字母
char firstChar = GetRandomLetter();
char secondChar = GetRandomLetter();
// 2. 生成4位随机数字(0000 ~ 9999)
int randomNumber = Random.Range(0, 10000);
// 格式化数字,不足4位自动补0
string numberStr = randomNumber.ToString("D4");
// 3. 拼接最终UserId
string userId = $"{firstChar}{secondChar}{numberStr}";
return userId;
}
/// <summary>
/// 辅助方法:生成单个随机小写字母(a-z)
/// </summary>
private static char GetRandomLetter()
{
// a的ASCII码是97,z是122,随机取中间值
int asciiCode = Random.Range(97, 123);
return (char)asciiCode;
}
}
使用示例
你可以在任意脚本中直接调用这个静态方法:
public class Test : MonoBehaviour
{
void Start()
{
// 生成UserId
string userId = UserIdGenerator.GenerateRandomUserId();
Debug.Log("生成的随机UserId:" + userId);
}
}
核心说明
-
字母生成逻辑
- 利用ASCII码:小写字母
a=97,z=122 Random.Range(97,123)会随机生成97~122之间的整数,强转char后就是随机小写字母
- 利用ASCII码:小写字母
-
数字生成逻辑
Random.Range(0,10000)生成0~9999的整数ToString("D4")格式化:自动补前导零(如 5 → 0005,123 → 0123)
-
格式保证
- 最终结果严格固定长度:6位字符(2字母+4数字)
- 无大写字母、无特殊符号,完全符合你的要求
扩展版本(可选)
如果你需要生成不重复的UserId,可以使用这个带缓存的版本:
using System.Collections.Generic;
using UnityEngine;
public static class UniqueUserIdGenerator
{
private static readonly HashSet<string> usedIds = new HashSet<string>();
public static string GenerateUniqueUserId()
{
string userId;
// 循环生成直到得到未使用过的Id
do
{
userId = UserIdGenerator.GenerateRandomUserId();
} while (usedIds.Contains(userId));
usedIds.Add(userId);
return userId;
}
// 清空已使用的Id缓存
public static void ClearUsedIds() => usedIds.Clear();
}
总结
- 基础版
GenerateRandomUserId()直接生成符合格式的随机ID - 数字自动补0,字母纯小写,格式固定6位
- 扩展版支持生成唯一不重复的UserId
- 纯C#实现,无需依赖,可直接在Unity中运行