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

# 最佳实践

  1. 对战开始时创建 - 在 OnFrameSyncStart 事件中立即创建
  2. 使用服务器种子 - 必须使用 OnFrameSyncStart 事件返回的 seed
  3. 先创建后使用 - 确保在调用 RandomInt 之前已创建管理器

# 相关API