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

使用NamedBuildTarget.Unknown调用PlayerSettings.SetApiCompatibilityLevel报错求助

问题

我尝试用以下代码统一设置PlayerSettings的API兼容级别为.NET Framework:

// Set PlayerSettings API Compatibility Level to always be .NET Framework
PlayerSettings.SetApiCompatibilityLevel(UnityEditor.Build.NamedBuildTarget.Unknown, ApiCompatibilityLevel.NET_Unity_4_8);

但运行后抛出错误:

ArgumentException: The provided target platform group name () is not valid.
UnityEditor.PlayerSettings.SetApiCompatibilityLevel (UnityEditor.Build.NamedBuildTarget buildTarget, UnityEditor.ApiCompatibilityLevel value) (at <4f41070b52224a70bdc90f923c6b37de>:0)

此前我能用PlayerSettings.SetIcons(UnityEditor.Build.NamedBuildTarget.Unknown, new Texture2D[] ......)的方式统一设置图标,但API兼容级别用同样的方式行不通。由于我们支持的所有设备平台都兼容目标.NET API,我希望找到一种统一设置的方案,而非为每个构建目标单独编写代码。

解决方案

NamedBuildTarget.Unknown并不适用于PlayerSettings.SetApiCompatibilityLevel方法,该方法要求传入有效的构建目标。不过你可以通过遍历所有已注册的构建目标来实现统一设置,无需手动逐个编写:

using UnityEditor;

public static class ApiCompatibilityBatchSetup
{
    [MenuItem("Tools/Batch Set API Compatibility Level")]
    public static void SetAllTargetsApiCompatibility()
    {
        foreach (var buildTarget in NamedBuildTarget.AllBuildTargets)
        {
            if (buildTarget == NamedBuildTarget.Unknown) continue;
            
            PlayerSettings.SetApiCompatibilityLevel(buildTarget, ApiCompatibilityLevel.NET_Unity_4_8);
        }

        AssetDatabase.SaveAssets();
        UnityEngine.Debug.Log("已为所有构建目标统一设置API兼容级别");
    }
}

另外,也可以通过编辑器UI直接设置默认值并同步所有目标:

  • 打开Edit > Project Settings > Player面板
  • 在Other Settings中找到Api Compatibility Level,选择目标.NET版本
  • 该设置会自动同步到所有未单独配置过API兼容级别的构建目标

如果需要代码自动化处理,上述遍历NamedBuildTarget.AllBuildTargets的方式最可靠,能确保所有现有构建目标都被统一设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:43:23