Unity3D C#随机整数生成器 我用了C++很长时间了。现在,我刚开始在Unity3D中使用C#。我几乎完成了一个应用程序,但在Unity C#(最小值和最大值)中似乎找不到一个工作的int生成器。 我尝试了以下方法: r = Random.Range(min, max)

Unity3D C#随机整数生成器 我用了C++很长时间了。现在,我刚开始在Unity3D中使用C#。我几乎完成了一个应用程序,但在Unity C#(最小值和最大值)中似乎找不到一个工作的int生成器。 我尝试了以下方法: r = Random.Range(min, max),c#,c++,random,unity3d,C#,C++,Random,Unity3d,及 两个都不起作用。我知道C++中使用的是: r = rand() % max + min; 如果你想要一个随机数。但Unity C#的情况如何? 代码: 编辑: using UnityEngine; using System.Collections; public class STarget : MonoBehaviour { public GameObject inter; int rand; public GameObject TS1; public GameObject TS2; p

两个都不起作用。我知道C++中使用的是:

r = rand() % max + min;
如果你想要一个随机数。但Unity C#的情况如何? 代码:

编辑

using UnityEngine;
using System.Collections;

public class STarget : MonoBehaviour {
public GameObject inter;
int rand;
public GameObject TS1;
public GameObject TS2;
public GameObject TS3;
public GameObject TS4;
public GameObject TS5;
void Update () {
    rand = Random.Range(1, 6);
}
public void GameRun () {
    switch (rand){
        case 1:
            inter = TS1;
            break;
        case 2:
            inter = TS2;
            break;
        case 3:
            inter = TS3;
            break;
        case 4:
            inter = TS4;
            break;
        case 5:
            inter = TS5;
            break;
    }
    Game.TargetSingle(inter);
    }
}

< C++ > C++,就像R= RAND()%MAX+MIN <代码>,在C++中,在<代码> MIN >代码>和<代码> max >代码>之间,在C语言中有不同的数字。首先,您可以使用
Random.Range(最小值,最大值)
以单位形式获取随机数

<> >真正理解的是<代码>随机。范围(min,max)< /> >将<强>不<强>,真的在C++ >代码> >代码>和<代码> max >代码之间。如果提供的
min
max
为整数,则它将为您提供一个介于
min
an
(max-1)
之间的随机数


因此,当您需要从
1
5
的随机数时,请将
1
添加到最大值(5),否则您将只获得从
1
4
的数<代码>随机范围(2,5+1)
随机范围(最小,最大+1)
。这可能是你的问题。

< P>来自C++,就像<代码> r= RAND()%max +min >代码>,C++中的<代码> min <代码>和<代码> max >代码>,在C语言中是不同的。首先,您可以使用
Random.Range(最小值,最大值)
以单位形式获取随机数

<> >真正理解的是<代码>随机。范围(min,max)< /> >将<强>不<强>,真的在C++ >代码> >代码>和<代码> max >代码之间。如果提供的
min
max
为整数,则它将为您提供一个介于
min
an
(max-1)
之间的随机数


因此,当您需要从
1
5
的随机数时,请将
1
添加到最大值(5),否则您将只获得从
1
4
的数<代码>随机范围(2,5+1)
随机范围(最小,最大+1)
。这可能是你的问题。

解释一下“不起作用”,你有例外吗?你得到了一个你不期望的结果?如果您不描述问题,我们将无法帮助您解决问题。
rand.Next(min,max)
已签出。确保你不属于
随机范围。范围(最小值、最大值)
也应该有效。取决于您想要什么。使用Unity时,rand.Next不会签出。记住,我不是在说普通的C语言。你的脚本太离奇了。它甚至没有显示你叫GamerRun的地方。你对Update()的使用非常奇怪。解释一下“不起作用”,你有例外吗?你得到了一个你不期望的结果?如果您不描述问题,我们将无法帮助您解决问题。
rand.Next(min,max)
已签出。确保你不属于
随机范围。范围(最小值、最大值)
也应该有效。取决于您想要什么。使用Unity时,rand.Next不会签出。记住,我不是在说普通的C语言。你的脚本太离奇了。它甚至没有显示你叫GamerRun的地方。你对Update()的使用非常奇怪。请记住,如果你将
float
传递给它,它会包含最大值。@gjttt1我想我是这么说的。“如果提供的最小值和最大值是整数,它将给你一个介于最小值和(最大值-1)之间的随机数”啊,是的,我一定读得太快了!我的mistake@AustinKugler老兄,你的代码很糟糕。这与随机数函数无关。您在哪里调用GamerRun()?你不是在任何地方叫它。。。。。这真的是你的全部代码吗?@Austingugler程序员是对的。在更新函数中重新评估
Random.Range
,这样在
GameRun()
函数中使用它是很奇怪的。知道何时调用此函数将有助于找到正确的解决方案。您给出的答案是一种不必要的复杂方法。记住,如果您将
float
传递给它,它包含最大值。@gjttt1我想我是这么说的。“如果提供的最小值和最大值是整数,它将给你一个介于最小值和(最大值-1)之间的随机数”啊,是的,我一定读得太快了!我的mistake@AustinKugler老兄,你的代码很糟糕。这与随机数函数无关。您在哪里调用GamerRun()?你不是在任何地方叫它。。。。。这真的是你的全部代码吗?@Austingugler程序员是对的。在更新函数中重新评估
Random.Range
,这样在
GameRun()
函数中使用它是很奇怪的。知道何时调用此函数将有助于找到正确的解决方案。你给出的答案是一种不必要的复杂方式。
using UnityEngine;
using System.Collections;

public class STarget : MonoBehaviour {
public GameObject inter;
int rand;
public GameObject TS1;
public GameObject TS2;
public GameObject TS3;
public GameObject TS4;
public GameObject TS5;
void Update () {
    rand = Random.Range(1, 6);
}
public void GameRun () {
    switch (rand){
        case 1:
            inter = TS1;
            break;
        case 2:
            inter = TS2;
            break;
        case 3:
            inter = TS3;
            break;
        case 4:
            inter = TS4;
            break;
        case 5:
            inter = TS5;
            break;
    }
    Game.TargetSingle(inter);
    }
}