C# 无法将类型float隐式转换为int。存在显式转换(是否缺少强制转换?)

C# 无法将类型float隐式转换为int。存在显式转换(是否缺少强制转换?),c#,unity3d,C#,Unity3d,我正在尝试从一系列繁殖点中随机繁殖一个僵尸。 使用unity游戏引擎 它说“如果存在显式转换(是否缺少强制转换?),则无法将类型float隐式转换为int” Mathf.Found返回浮点值。该浮点数随后被用作繁殖[]的索引。只允许使用整数进行索引 void Start() { foreach (GameObject x in zomz) { zomz[unonumero] = Instantiate(regzom, spawns[(int)Mathf.Round

我正在尝试从一系列繁殖点中随机繁殖一个僵尸。 使用unity游戏引擎 它说“如果存在显式转换(是否缺少强制转换?),则无法将类型float隐式转换为int”


Mathf.Found
返回浮点值。该浮点数随后被用作繁殖[]的索引。只允许使用整数进行索引

void Start()
{
    foreach (GameObject x in zomz)
    {
        zomz[unonumero] = Instantiate(regzom, spawns[(int)Mathf.Round(Random.Range(0f, 10f))]);
        unonumero++;
    }
}
编辑:
Marco Elizondo的答案更好。改为使用Mathf.RoundToInt。

您几乎完成了,错误是试图说您使用的是浮点而不是int

数组索引只能是整数,在您的行中:

zomz[unonumero] = Instantiate(regzom, spawns[Mathf.Round(Random.Range(0f, 10f))]);
您正在使用
Mathf.Round(Random.Range(0f,10f))
获得随机数,然后对其进行舍入,这是一个明智的选择,因此您有一个随机浮点数,如2.4f,舍入为2.0f,问题是它仍然是一个浮点数,而不是一个整数

Matfh有一个很酷的舍入方法,可以给你一个整数,你可以使用这个
Mathf.RoundToInt()
,比如:

zomz[unonumero] = Instantiate(regzom, spawns[Mathf.RoundToInt(Random.Range(0f, 10f))]);

我希望它是清楚的:)

非常感谢你,我非常震惊,我会得到如此多的回应,这是我的第三场比赛,我还没有完成任何比赛,所以你的帮助当然是正确的
zomz[unonumero] = Instantiate(regzom, spawns[Mathf.RoundToInt(Random.Range(0f, 10f))]);