猿问

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

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


 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 的版本或其他任何东西,有一天它可以工作,而下一天却没有。


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


BIG阳
浏览 200回答 2
2回答

人到中年有点甜

您没有分配 FormatProvider,这可能会导致错误,具体取决于您的系统。你可以试试float var = float.Parse(mass.text, CultureInfo.InvariantCulture);鉴于 mass.text 将始终是一个有效的浮点数。在处理 Unity 时,您可能还想尝试float var = float.Parse(mass.text, new CultureInfo("en-US").NumberFormat);它将始终以标准美国格式(带点)解析浮点数。但是,您的代码中也可能存在其他问题,例如,字符串可能并不总是可解析的浮点数,您可能想改用 TryParse 或确保它始终可以解析为浮点数表示。

万千封印

从你的问题给出InputField mass = null; // assign this firstfloat mass_ = "0.1f" //sample valueif(float.TryParse(mass.text, out mass_)){    /// everything is ok}else{    /// something wrong. mass.text has incorrect float value}尝试,而不是Parse一个TryParse功能。
随时随地看视频慕课网APP
我要回答