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

Unity中float.TryParse在iPhone端解析失败,编辑器正常求助

问题背景

有一个经Substring处理后的字符串变量_rawJson,内容为:

0.561 

使用以下C#代码进行float类型解析:

float moonIllumination = -1;

bool success = float.TryParse(_rawJson.Substring(1, 5), out moonIllumination);
if (success)
{
    Debug.LogWarning($"Converted '{_rawJson.Substring(1, 5)}' to {moonIllumination}.");
}
else
{
    Debug.LogWarning($"Attempted conversion of '{_rawJson.Substring(1, 5) ?? \"<null>\"}' failed.");
}

在Unity编辑器中运行时输出正常:

Converted '0.561' to 0.561.

但部署到iPhone后解析失败,输出:

Attempted conversion of '0.561' failed.
排查思路与原因提示
  • 区域文化差异是最常见原因
    iOS设备的系统区域设置可能用逗号(,)作为小数点分隔符,而非点(.)。float.TryParse默认使用当前线程的文化信息,编辑器通常采用点分隔的文化(如en-US),但iPhone如果是欧洲等区域,会将0.561判定为无效格式。解决时直接指定不变文化解析:

    using System.Globalization;
    
    // ...
    
    bool success = float.TryParse(
        _rawJson.Substring(1, 5), 
        NumberStyles.Float, 
        CultureInfo.InvariantCulture, 
        out moonIllumination
    );
    
  • 检查字符串是否含隐藏字符
    日志显示的0.561可能包含不可见控制字符(如换行、空格、零宽字符),编辑器和iOS的字符串渲染/处理逻辑有差异,导致iOS下解析带隐藏字符的字符串失败。可以先清理字符串再解析:

    string targetStr = _rawJson.Substring(1, 5).Trim();
    bool success = float.TryParse(targetStr, out moonIllumination);
    

    或者输出字符串的字节码确认是否有异常字符:

    string targetStr = _rawJson.Substring(1, 5);
    Debug.LogWarning($"String bytes: {BitConverter.ToString(Encoding.UTF8.GetBytes(targetStr))}");
    
  • 验证Substring截取的准确性
    原字符串末尾有空格,Substring(1,5)的截取范围可能在iOS下得到意外结果。不同平台对字符串编码的处理可能存在差异,导致截取的内容和编辑器不一致。建议先输出截取后字符串的长度和具体内容:

    string targetStr = _rawJson.Substring(1, 5);
    Debug.LogWarning($"Target string: '{targetStr}', length: {targetStr.Length}");
    

    如果截取的内容包含空格或其他多余字符,调整Substring的参数或先做Trim处理。

  • 尝试替换解析方式
    极少数情况下,Unity iOS平台对float.TryParse的底层实现有差异,可以尝试用double.TryParse转float,或者手动拆分字符串计算:

    // 手动解析示例
    string targetStr = _rawJson.Substring(1, 5).Trim();
    if (double.TryParse(targetStr, out double temp))
    {
        moonIllumination = (float)temp;
        success = true;
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:10:02