float.Parse不再在Unity中工作(C#)

时间:2018-05-18 02:06:49

标签: c# parsing unity3d

我有一个包含以下代码行的工作项目

 public InputField mass;
 float val = float.Parse(mass.text);

非常直截了当,一个用户放置了大量的质量,它从文本解析到浮动,这在几天前完美地工作,我甚至能够多次导出项目,没有任何问题。

今天我回来做了一些更改,然后我就测试了它并得到了这个错误。

  

FormatException:格式无效。 System.Double.Parse(System.String s,   NumberStyles风格,IFormatProvider提供者)(at   /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Double.cs:209)   System.Single.Parse(System.String s)(at   /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/Single.cs:183)   ControlMasa.Update()(在Assets / Scripts / ControlMasa.cs:47)

我不知道为什么它突然停止工作,不像我更新了Unity的版本或任何东西,有一天它正在工作而下一个它不是。

问题是什么,我该怎么办?

2 个答案:

答案 0 :(得分:3)

您没有分配FormatProvider,这可能会导致错误,具体取决于您的系统。你可以试试

float var = float.Parse(mass.text, CultureInfo.InvariantCulture);

假设mass.text始终是有效的浮点数。在处理Unity时,您可能还想尝试

float var = float.Parse(mass.text, new CultureInfo("en-US").NumberFormat);

将始终以标准美国格式解析浮点数(带点)。

但是,您的代码中可能还有其他问题,例如也许字符串不总是可解析的浮点数,您可能想要使用TryParse或确保它始终可以解析为浮点表示。

答案 1 :(得分:0)

根据你的问题

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功能。