C# Unity3D中的随机数?

C# Unity3D中的随机数?,c#,random,unity3d,artificial-intelligence,C#,Random,Unity3d,Artificial Intelligence,我发现的是如何创建随机数。伟大的但是,此解决方案在其他功能中不起作用。为了创建一个随机数,我使用 Random randomDirection = new Random(); int directionChoice = randomDirection.Next(1, 4); 在名为enemyWalk(){}的函数内部 但是,这导致了一个错误: 类型“UnityEngine.Random”不包含“Next”和的定义 找不到类型为“UnityEngine.Random”的扩展方法“Next” (

我发现的是如何创建随机数。伟大的但是,此解决方案在其他功能中不起作用。为了创建一个随机数,我使用

Random randomDirection = new Random();
int directionChoice = randomDirection.Next(1, 4); 
在名为enemyWalk(){}的函数内部

但是,这导致了一个错误:

类型“UnityEngine.Random”不包含“Next”和的定义 找不到类型为“UnityEngine.Random”的扩展方法“Next” (是否缺少using指令或程序集引用?)

从函数中取出随机整数生成器时,不会出现此错误。有解决这个问题的办法吗


我希望通过随机选择一个整数来决定我的敌人行走的方向(向上、向左、向右或向下),然后使用随机双生成器来确定它行走的距离,从而使我的敌人在不做任何事情的情况下四处游荡。然而,每当
enemyWalk(){}

简单的解决方案是只使用.NET的
Random
类,该类恰好位于
系统
命名空间中:

using System;

...

//Or System.Random without the using
Random randomDirection = new Random();
int directionChoice = randomDirection.Next(1, 5);
如果要使用Unity,请调用
Range
,而不是
Next

int directionChoice = randomDirection.Range(1, 5);
请注意,“max”在这两种情况下都是独占的,因此您应该使用5返回1到4之间的值(包括4)

要获取随机
浮点值

Random.NextDouble(); //careful, this is between 0 and 1, you have to scale it
//Also, this one is exclusive on the upper bound (1)

Random.Range(1f, 4f); //max is inclusive now
在Unity C中,方法如下

Random.Range(minVal, maxVal);

该方法将接受整数或浮点参数。如果使用int
minVal
包含的
maxVal
排除的,则返回的随机值。在您的情况下,它将是:

Random.Range(1,4);
而不是
Next(1,4)

例如,如果使用浮点数

Random.Range(1.0F, 3.5F);

返回值也是一个浮点,
minVal
maxVal
在这种情况下是包含的。

使用Unity时,它是否允许您使用.NET
System.Random
类?如果是这样,你应该使用它(正如布拉德利所建议的)。如果没有,你应该在你的问题中清楚这一点。这可能看起来很愚蠢(对不起,我是新手),但我不确定我是否正确使用了这个。当我插入它时,我得到了同样的错误,但这次它说“找不到名称空间名称'Math'的类型”。但是,我不确定是否需要集成.NET?另外,我没有在任何地方使用System.Math,我不确定是否必须使用。@Grantwiney浮点版本是包含的,int版本是独占的。这取决于调用哪个重载。我相信在上述情况下,int-one会出现。@Jeff如果顶部没有使用System
,请尝试添加它,或者使用
System.Math.Random
而不是
Math.Random
。我无法想象你不被允许在Unity项目中使用
System
。@BradleyDotNet是的,这是有道理的。使用系统是允许的。@PeterDuniho我实际上说的是
System.Math
,但我认为他在顶部有一个
使用系统。我把它添加到我的代码中。这非常有效。然而,有没有一种方法可以对浮点数执行类似的操作?我希望让我的角色沿着这些线走3.5米或其他什么。
maxVal
是唯一的整数重载
Range
我的错误。编辑。根据文档,此方法支持浮动作为重载之一。