# TapBattleClient.NewRandomNumberGenerator
# 功能描述
创建确定性随机数生成器,使用指定的种子。通过相同的种子,可以确保多端生成相同的随机数序列。
重要: 使用 RandomInt 之前必须先调用此方法创建随机数管理器。
# 方法签名
public static void NewRandomNumberGenerator(int seed)
# 参数说明
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| seed | int | 是 | 随机数种子(必须使用OnFrameSyncStart事件中的seed) |
# 使用说明
# 调用时机
- 对战开始时 - 在 OnFrameSyncStart 事件回调中调用
- 使用服务器种子 - 必须使用 OnFrameSyncStart 事件中返回的 seed 参数
# 注意事项
- 必须先调用 - 使用 RandomInt 前必须先创建随机数管理器
- 使用服务器种子 - 必须使用OnFrameSyncStart返回的seed,不要自己生成
- 同时只有一个 - SDK同时只维护一个活跃的随机数生成器实例
- 对战结束释放 - 对战结束时可选择性调用 FreeRandomNumberGenerator 释放(非必须)
# 代码示例
# 示例:创建和使用随机数生成器
using UnityEngine;
public class RandomManager : MonoBehaviour
{
// 对战开始时创建随机数生成器
public void OnFrameSyncStart(FrameSyncStartInfo info)
{
Debug.Log($"创建随机数生成器,种子: {info.seed}");
// 必须先创建,才能使用 RandomInt
TapBattleClient.NewRandomNumberGenerator(info.seed);
}
// 生成随机数
public int GetRandomNumber()
{
// 必须在调用 NewRandomNumberGenerator 之后才能使用
return TapBattleClient.RandomInt();
}
// 对战结束时释放(可选)
public void OnFrameSyncStop()
{
TapBattleClient.FreeRandomNumberGenerator();
}
}
# 最佳实践
- 对战开始时创建 - 在 OnFrameSyncStart 事件中立即创建
- 使用服务器种子 - 必须使用 OnFrameSyncStart 事件返回的 seed
- 先创建后使用 - 确保在调用 RandomInt 之前已创建管理器
# 相关API
- TapBattleClient.RandomInt - 生成随机整数(推荐使用)
- TapBattleClient.FreeRandomNumberGenerator - 释放随机数生成器
