2014-12-10 21 views
0
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再次

我做了什么错了?

回答

1

随机()不是true随机的意义上说,它不是完全不可预知的。

它是一个种子随机,这意味着如果你给它相同的种子值,它会给你相同的一系列数字。当你创建一个没有种子的Random()时(正如你所做的那样),C#使用当前时间作为种子。如果你在一个循环内过快地完成这个操作,种子是相同的,所以第一个值是相同的,这就是为什么你看到很多对象一次产生的原因。

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

+0

非常感谢,明白了。 – 2014-12-10 22:25:53

相关问题