我有一個帶有以下代碼行的工作項目 public InputField mass; float val = float.Parse(mass.text);非常簡單,用戶放置了大量質(zhì)量,然后將其從文本解析為浮動,這在幾天前工作得非常好,我什至能夠多次導(dǎo)出該項目,沒有任何問題。今天我返回進行了一些更改,在此之前我對其進行了測試并收到此錯誤。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條經(jīng)驗 獲得超7個贊
您沒有分配 FormatProvider,這可能會導(dǎo)致錯誤,具體取決于您的系統(tǒng)。你可以試試
float var = float.Parse(mass.text, CultureInfo.InvariantCulture);
鑒于 mass.text 將始終是一個有效的浮點數(shù)。在處理 Unity 時,您可能還想嘗試
float var = float.Parse(mass.text, new CultureInfo("en-US").NumberFormat);
它將始終以標(biāo)準美國格式(帶點)解析浮點數(shù)。
但是,您的代碼中也可能存在其他問題,例如,字符串可能并不總是可解析的浮點數(shù),您可能想改用 TryParse 或確保它始終可以解析為浮點數(shù)表示。

萬千封印
TA貢獻1891條經(jīng)驗 獲得超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 關(guān)注
- 233 瀏覽
添加回答
舉報
0/150
提交
取消