C# 除了1,我有其他号码

C# 除了1,我有其他号码,c#,unity3d,random,C#,Unity3d,Random,这是我写的随机生成一些东西的代码,顺便说一句,两个位置,但它总是在“spawnpoint2”和IDK中生成它要做什么 { public Transform spawnpoint1; public Transform spawnpoint2; public GameObject enemyprefab; private void Start() { InvokeRepeating("spawn", 3f, 5f); } void spawn() { float randomiz

这是我写的随机生成一些东西的代码,顺便说一句,两个位置,但它总是在“spawnpoint2”和IDK中生成它要做什么

{
public Transform spawnpoint1;
public Transform spawnpoint2;
public GameObject enemyprefab;

private void Start()
{
    InvokeRepeating("spawn", 3f, 5f);
}

void spawn()
{
    float randomizer= Random.Range(0f, 3f);
    if (randomizer == 1f)
        Instantiate(enemyprefab, spawnpoint1);
    else
        Instantiate(enemyprefab, spawnpoint2);
}

}这是方法的浮点版本
Random.Range
。有时会出现1.0f,但这非常罕见

您最好使用int版本

//随机。范围(0f,3f);//浮动版本
随机。范围(0,3);//整型

如果您尝试获取介于0和3(包括)之间的浮点数,那么在所有可能的中间值之间仅获取1.0的可能性很小。
您应该使用Random.Range中的整数版本,但此版本排除了上限,因此您应该使用4作为上限,以获取0到3之间的任何值
虽然它看起来是次要的(您只检查1,因此即使上限为2,您也会得到1),但使用上限为3会更改1结果与其他数字的频率,因此您的生成点1将更频繁

void spawn()
{
    int randomizer= Random.Range(0, 4);
    if (randomizer == 1)
        Instantiate(enemyprefab, spawnpoint1);
    else
        Instantiate(enemyprefab, spawnpoint2);
}

是的,但是你也可以发送一个脚本嵌入位置的屏幕截图,这样我就可以看到传递到脚本中的内容。你从随机请求中得到1.0的可能性似乎很小。如果使用int版本的Random.range,可能会获得更好的结果。这是否回答了您的问题?注意,您可以使用“if”的内联版本:
Instantiate(enemyprefab,randomizer==1?spawnpoint1:spawnpoint2)