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

核心说明

  1. 字母生成逻辑

    • 利用ASCII码:小写字母a=97,z=122
    • Random.Range(97,123) 会随机生成97~122之间的整数,强转char后就是随机小写字母
  2. 数字生成逻辑

    • Random.Range(0,10000) 生成0~9999的整数
    • ToString("D4") 格式化:自动补前导零(如 5 → 0005,123 → 0123)
  3. 格式保证

    • 最终结果严格固定长度: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();
}

总结

  1. 基础版GenerateRandomUserId()直接生成符合格式的随机ID
  2. 数字自动补0,字母纯小写,格式固定6位
  3. 扩展版支持生成唯一不重复的UserId
  4. 纯C#实现,无需依赖,可直接在Unity中运行