# TapBattleClient.RandomInt
# 功能描述
生成确定性随机整数。所有客户端使用相同种子按相同顺序调用,会得到相同的随机数序列。常用于需要多客户端随机结果一致的场景,例如开宝箱、抽卡等。
前提: 必须先调用 NewRandomNumberGenerator 创建随机数管理器(使用OnFrameSyncStart事件中的seed)。
# 方法签名
public static int RandomInt()
# 返回值
返回一个随机整数(int类型)。
# 使用说明
# 典型使用场景
- 开宝箱 - 保证所有玩家看到相同的掉落结果
- 抽卡 - 保证所有玩家抽到相同的卡牌
- 随机事件 - 保证所有玩家触发相同的随机事件
- 随机生成 - 保证所有玩家生成相同的地图/敌人
# 注意事项
- 必须先创建 - 调用前必须先调用NewRandomNumberGenerator创建随机数管理器
- 使用服务器种子 - 必须使用OnFrameSyncStart事件中返回的seed
- 按顺序调用 - 所有客户端必须按相同顺序调用,才能保证结果一致
- 不要混用 - 游戏逻辑中不要同时使用Unity的Random和SDK的RandomInt
- 范围转换 - 返回值需要自行转换到需要的范围
# 代码示例
# 示例1:生成指定范围的随机数
using UnityEngine;
public class RandomHelper : MonoBehaviour
{
// 生成0-max之间的随机数
public int RandomRange(int max)
{
return TapBattleClient.RandomInt() % max;
}
// 生成min-max之间的随机数
public int RandomRange(int min, int max)
{
int range = max - min;
return min + (TapBattleClient.RandomInt() % range);
}
// 生成随机浮点数(0.0-1.0)
public float RandomFloat()
{
return (TapBattleClient.RandomInt() % 10000) / 10000f;
}
}
# 最佳实践
- 统一调用顺序 - 确保所有客户端在相同的游戏逻辑点调用RandomInt
- 封装辅助方法 - 封装常用的随机数范围转换方法
- 避免条件调用 - 不要在if语句等条件分支中调用,会导致调用顺序不一致
# 相关API
- TapBattleClient.NewRandomNumberGenerator - 创建随机数生成器
- TapBattleClient.FreeRandomNumberGenerator - 释放随机数生成器
