Unity3d生成多个随机数

时间:2016-12-16 18:17:03

标签: c# unity3d random

我正在尝试为我正在制作的游戏一次生成两个随机(整数)数字。我试图随机生成一个开始和结束的瓷砖。当我这样做时,我的两个随机生成的数字总是相同的。我理解这可能只是因为他们被称为计算在一起关闭,但我找不到任何有关如何获得两个不同随机数的信息。我的代码非常简单(在c#中):

float startTile = Mathf.Ceil(Random.Range(1.0f, 8.0f));
float endTile = Mathf.Ceil(Random.Range(1.0f, 8.0f));

提前谢谢!

修改

这被标记为重复的问题,旧问题的答案是:

Random rand = new Random();
int t = rand.next(x,x2);

除非我做错了什么,否则我甚至无法在统一内使用rand.Next(x,x1)函数。

enter image description here

实际代码:

private void SpawnStartandEndTiles()
{
    Random rand = new Random();
    int t = rand.N //<Next is not an option

    //Other misc. Code that uses the random numbers
}

如果我对Random函数的工作方式没有了解,请告诉我。

非常感谢。

1 个答案:

答案 0 :(得分:0)

首先不要使用System.Random,因为使用System命名空间(*)中的大多数类会大大增加游戏的大小。而是使用UnityEngine.Random

始终使用种子生成随机数。给定特定种子,随机数序列始终相同。你可以说计算随机从来都不是随机的。

Random.seed设置为一个值,具体取决于使Random.Range生成接近真实随机数的时间。

例如:

Random.seed = System.DateTime.Now.Millisecond;
//...
float startTile = Mathf.Ceil(Random.Range(1.0f, 8.0f));
float endTile = Mathf.Ceil(Random.Range(1.0f, 8.0f));

(*)这些是在mscorlib.dll中,因此对游戏大小没有任何影响

System.Collection.*
System.Collection.Generic.*
System.IO.*
相关问题