我有一个包含以下代码行的工作项目
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的版本或任何东西,有一天它正在工作而下一个它不是。
问题是什么,我该怎么办?
答案 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
功能。