【问题标题】:Unity3D C# Random Int Generator [closed]Unity3D C# Random Int Generator [关闭]
【发布时间】:2016-05-08 23:22:30
【问题描述】:

我已经使用 C++ 很长时间了。现在,我刚刚开始在 Unity3D 中使用 C#。我几乎完成了一个应用程序,但我似乎无法在 Unity C# 中找到一个有效的 int 生成器(具有最小值和最大值)。 我尝试了以下方法:

r = Random.Range(min, max)

Random rand = new Random();
r = rand.next(min, max)

两者都不起作用。我知道你在 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);
    }
}

【问题讨论】:

  • 解释“没用”,你有例外吗?你得到了你意想不到的结果?如果您不描述问题,我们将无法帮助您解决问题。
  • rand.Next(min,max) 结帐。确保你没有落入the hole of new-ing identically seeded randoms in a loop
  • Random.Range(min,max) 也应该可以工作。取决于你想要什么。
  • rand.Next 在您使用 Unity 时不会检出。请记住,我说的不是普通的 C#。
  • 你的剧本是TOTALLY BIZARRE。它甚至没有显示您调用 GameRun 的位置。您对 Update() 的使用非常奇怪。

标签: c# c++ random unity3d


【解决方案1】:

来自 C++,就像 r = rand() % max + min 会给你在 C++ 中 minmax 之间的随机数,它在 C# 中是不同的。首先,在 Unity 中使用Random.Range(min, max) 获取随机数。

要真正理解的是,Random.Range(min, max)不会真正为您提供 minmax 之间的随机值,就像在 C++ 中那样。如果提供的minmax 是整数,它将在min(max-1) 之间为您提供一个随机数。

因此,当您需要从15 的随机数时,请将1 添加到最大值(5),否则您将只能获得从14 的数字。 Random.Range(2, 5+1)Random.Range(min, max+1)。这可能是你的问题。

【讨论】:

  • 请记住,如果您将float 传递给它,它会包含最大值。
  • @gjttt1 我想我是这么说的。 "如果提供的 min 和 max 是 integer,它会给你一个介于 min an (max-1) 之间的随机数"
  • 啊,是的,我一定是读得太快了!我的错误
  • @AustinKugler 老兄,你的代码很糟糕。这与您的随机数函数无关。你从哪里调用 GameRun()?你不是从任何地方调用它.....这真的是你的全部代码吗?
  • @AustinKugler 程序员是对的。在更新函数中重新评估Random.Range 只是为了在GameRun() 函数中使用它是很奇怪的。知道您何时调用此函数将有助于找到正确的解决方案。您给出的答案是一种不必要的复杂方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
  • 2010-09-24
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多