如果循环导致物品在真实条件更改后生成

本文关键字:条件 后生 真实 循环 如果 | 更新日期: 2023-09-27 18:33:51

System.Random rnd = new System.Random();
    float CloudPoint = rnd.Next (-9, 9);
    double CloudRate = rnd.Next (1, 20);
    Debug.Log(CloudRate);
    Vector2 CloudPos;
    CloudPos.y = CloudPoint;
    CloudPos.x = -21;
    if (CloudRate == 10) {
        CloudRate = 0; 
        //Debug.Log(CloudRate);
        Instantiate (Cloud, CloudPos, Quaternion.identity);
    } 
    else {
    }

这段代码等到 CloudRate == 10 然后不断生成云

我希望它生成一个云,然后再次停止 intil CloudRate == 10

我做错了什么?

如果循环导致物品在真实条件更改后生成

Random() 并不是真正的随机,因为它不是完全不可预测的。

相反,它是一个种子随机,这意味着如果你给它相同的种子值,它就会给你相同的数字系列。 当你创建一个没有种子的 Random() 时(就像你所做的那样),C# 使用当前时间作为种子。 如果你在循环中执行得太快,种子是相同的,所以第一个值是相同的,这就是为什么你会看到很多对象同时生成。

不要在循环中创建 System.Random(),而是在循环之前创建它并保持对它的引用,这应该可以解决问题。