You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity编辑器运行正常,Xcode打包后出现FormatException异常

问题解决:iOS打包后float解析FormatException

核心原因

iOS设备或打包后的运行环境默认使用的区域文化设置中,小数点分隔符不是.(比如部分欧洲地区用,),而你提取的字符串用.作为小数点,直接调用float.Parse()会因格式不匹配抛出异常。Unity编辑器中因为你的系统文化默认用.,所以运行正常。

解决方案

方法1:指定不变文化(最可靠)

解析时明确使用InvariantCulture,强制按.作为小数点规则解析:

using System.Globalization;

// 假设extractedString是你提取到的"81.6"
string extractedString = "81.6";
float moonPhase;
if (float.TryParse(extractedString, NumberStyles.Float, CultureInfo.InvariantCulture, out moonPhase))
{
    // 解析成功,使用moonPhase变量
}
else
{
    // 处理解析失败的 fallback 逻辑
}

方法2:适配当前区域的分隔符

将字符串中的.替换为当前系统的小数点分隔符:

using System.Globalization;

string extractedString = "81.6";
string adjustedString = extractedString.Replace('.', CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0]);
float moonPhase = float.Parse(adjustedString);

额外验证步骤

如果问题仍存在,可以先打印当前区域的小数点分隔符,确认是否是分隔符导致的问题:

Debug.Log("当前小数点分隔符:" + CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);

内容的提问来源于stack exchange,提问作者PeterK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:05:24