无法将float类型隐式转换为int。存在显式转换(您是否缺少演员表?)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法将float类型隐式转换为int。存在显式转换(您是否缺少演员表?)相关的知识,希望对你有一定的参考价值。
我正在尝试从一系列生成点中随机生成一个僵尸生成点。使用统一游戏引擎它说:“无法将类型float隐式转换为int,存在显式转换(是否缺少强制转换?)”
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class sown : MonoBehaviour
{
System.Random rnd = new System.Random();
public GameObject[] zomz = new GameObject[1];
public Transform[] spawns = new Transform[9];
public GameObject regzom;
int unonumero = 0;
void Start()
{
foreach (GameObject x in zomz)
{
zomz[unonumero] = Instantiate(regzom, spawns[Mathf.Round(Random.Range(0f, 10f))]);
unonumero++;
}
}
void Update()
{
}
}
答案
您差不多完成了,错误是想说您正在使用浮点数而不是整数。
行中的数组索引只能是整数:
zomz[unonumero] = Instantiate(regzom, spawns[Mathf.Round(Random.Range(0f, 10f))]);
您正在使用Mathf.Round(Random.Range(0f, 10f))
获取随机数,然后将其取整,这是一个明智的选择,因此您将2.4f的随机浮点数舍入为2.0f,问题是它仍然是浮点数,而不是整数。
Matfh有一个很酷的Round方法,为您提供一个整数,您可以使用此Mathf.RoundToInt()
,例如:
zomz[unonumero] = Instantiate(regzom, spawns[Mathf.RoundToInt(Random.Range(0f, 10f))]);
我希望清楚:)
另一答案
Mathf.Found
返回浮点数proof。然后将该浮点数用作spawns []的索引。仅允许将整数用于索引。
void Start()
{
foreach (GameObject x in zomz)
{
zomz[unonumero] = Instantiate(regzom, spawns[(int)Mathf.Round(Random.Range(0f, 10f))]);
unonumero++;
}
}
编辑:Marco Elizondo的答案更好。请改用Mathf.RoundToInt。
以上是关于无法将float类型隐式转换为int。存在显式转换(您是否缺少演员表?)的主要内容,如果未能解决你的问题,请参考以下文章
解决Html.CheckBoxFor中”无法将类型 bool 隐式转换为 bool。存在一个显式转换..."的方法
无法隐式转换类型“System.DateTime?”到“系统。日期时间”。存在显式转换