首页 > 解决方案 > 未处理的异常:System.FormatException:输入字符串的格式不正确在虚幻引擎 4.23 上启动到 iphone x 时

问题描述

在遵循几个关于启动 ios 的指南之后,我仍然无法让它工作。我尝试了一个空项目,ar kit sample 和 face ar sample,但无济于事。这是我得到的错误:

输入字符串的格式不正确。LogPlayLevel:在 System.Number.ThrowOverflowOrFormatException(System.Boolean 溢出,System.String overflowResourceKey)[0x0001a] 在:0 LogPlayLevel:在 System.Number.ParseSingle(System.ReadOnlySpan1[T] value, System.Globalization.NumberStyles styles, System.Globalization.NumberFormatInfo info) [0x00071] in :0 LogPlayLevel: at System.Single.Parse (System.String s) [0x0001a] in :0 LogPlayLevel: at UnrealBuildTool.ReadOnlyIOSTargetRules.get_RuntimeVersion () [0x00010] in :0 LogPlayLevel: at UnrealBuildTool.IOSPlatform.SetUpEnvironment (UnrealBuildTool.ReadOnlyTargetRules Target, UnrealBuildTool.CppCompileEnvironment CompileEnvironment, UnrealBuildTool.LinkEnvironment LinkEnvironment) [0x00226] in :0 LogPlayLevel: at UnrealBuildTool.UEBuildTarget.SetupGlobalEnvironment (UnrealBuildTool.UEToolChain ToolChain, UnrealBuildTool.CppCompileEnvironment GlobalCompileEnvironment, UnrealBuildTool.LinkEnvironment GlobalLinkEnvironment) [0x00bc8] in :0 LogPlayLevel: at UnrealBuildTool.UEBuildTarget.Build (UnrealBuildTool.BuildConfiguration BuildConfiguration, UnrealBuildTool.ISourceFileWorkingSet WorkingSet, System.Boolean bIsAssemblingBuild, Tools.DotNETCommon.FileReference SingleFileToCompile) [0x00061] in :0 LogPlayLevel: at UnrealBuildTool.BuildMode.CreateMakefile (UnrealBuildTool.BuildConfiguration BuildConfiguration, UnrealBuildTool.TargetDescriptor TargetDescriptor, UnrealBuildTool.ISourceFileWorkingSet WorkingSet) [0x00141] in :0 LogPlayLevel: at UnrealBuildTool.BuildMode.Build (System.Collections.Generic.List1[T] TargetDescriptors、UnrealBuildTool.BuildConfiguration BuildConfiguration、UnrealBuildTool.ISourceFileWorkingSet WorkingSet、UnrealBuildTool.BuildOptions Options、Tools.DotNETCommon.FileReference WriteOutdatedActionsFile) [0x0001a] in :0 LogPlayLevel: at UnrealBuildTool.BuildMode.Execute (Tools.DotNETCommon.CommandLineArguments Arguments) [0x002cc] in :0 LogPlayLevel: at UnrealBuildTool.UnrealBuildTool.Main (System.String[] ArgumentsArray) [0x00291] in :0 LogPlayLevel: 运行单声道耗时 30,190432 秒,ExitCode=5 LogPlayLevel: UnrealBuildTool 失败。有关详细信息,请参阅日志。(/Users/dondoo/Library/Logs/Unreal Engine/LocalBuildLogs/UBT-AR-IOS-Development.txt) LogPlayLevel:AutomationTool 以 ExitCode=5 (5) 退出 LogPlayLevel:已完成启动阶段:构建任务,时间:29.662970 LogPlayLevel :错误:运行UAT错误:AutomationTool 无法成功运行。PackagingResults:错误:启动失败!未知错误

我有一个有效的配置文件和证书以及苹果开发者帐户,在 Macbook pro 上工作,试图启动到 iphone x。

标签: unreal-engine4

解决方案


错误的原因是将 ios 版本从字符串转换为浮点数,而不考虑语言区域设置。"11.0" dot(".") 是问题

ue4_23_0\Engine\Source\Programs\UnrealBuildTool\Platform\IOS\UEBuildIOS.cs

...
//line 143
public float RuntimeVersion
{
    get { return float.Parse(Inner.ProjectSettings.RuntimeVersion); }
}
...
//line 368
public virtual string RuntimeVersion
{
    get
    {
        switch (MinimumIOSVersion)
        {
            case "IOS_11":
                return "11.0";
            case "IOS_12":
                return "12.0";
            default:
                return "11.0";
        }
    }
}
...

解决方案(不是最好的)添加语言环境来解析

...
//line 10
using Microsoft.Win32;
using System.Globalization; // <- Add this
...
//line 143
public float RuntimeVersion
{
    get { return float.Parse(Inner.ProjectSettings.RuntimeVersion, CultureInfo.InvariantCulture.NumberFormat); }
}
...

或设置系统的语言环境以使用点(“。”)作为小数分隔符


推荐阅读