我有一个带有以下代码行的工作项目 public InputField mass; float val = float.Parse(mass.text);非常简单,用户放置了大量质量,然后将其从文本解析为浮动,这在几天前工作得非常好,我什至能够多次导出该项目,没有任何问题。今天我返回进行了一些更改,在此之前我对其进行了测试并收到此错误。FormatException: 格式无效。System.Double.Parse(System.String s,NumberStyles 样式,IFormatProvider 提供程序)(位于 /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Double.cs:209) System.Single.Parse( System.String s)(在 /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Single.cs:183)ControlMasa.Update()(在 Assets/Scripts/ControlMasa.cs:47)我不知道为什么它突然停止工作,而不是好像我更新了 Unity 的版本或其他任何东西,有一天它可以工作,而下一天却没有。有什么问题,我该怎么办?
2 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
您没有分配 FormatProvider,这可能会导致错误,具体取决于您的系统。你可以试试
float var = float.Parse(mass.text, CultureInfo.InvariantCulture);
鉴于 mass.text 将始终是一个有效的浮点数。在处理 Unity 时,您可能还想尝试
float var = float.Parse(mass.text, new CultureInfo("en-US").NumberFormat);
它将始终以标准美国格式(带点)解析浮点数。
但是,您的代码中也可能存在其他问题,例如,字符串可能并不总是可解析的浮点数,您可能想改用 TryParse 或确保它始终可以解析为浮点数表示。
万千封印
TA贡献1891条经验 获得超3个赞
从你的问题给出
InputField mass = null; // assign this first
float mass_ = "0.1f" //sample value
if(float.TryParse(mass.text, out mass_))
{
/// everything is ok
}
else
{
/// something wrong. mass.text has incorrect float value
}
尝试,而不是Parse一个TryParse功能。
- 2 回答
- 0 关注
- 199 浏览
添加回答
举报
0/150
提交
取消