Unity-Technologies/UnityCsReference · error · NotSupportedException

Unknown EditorPluginCPUArchitecture value

Error message

Unknown EditorPluginCPUArchitecture value: {architecture}

What it means

Mirrors error 343 but for EditorPluginCPUArchitecture. The switch handles x86_64, ARM64, and AnyCPU; the default branch throws NotSupportedException for an unrecognized value. Editor plugins run in the editor process, so this enum is narrower than the desktop player one.

Solutions

  1. Reimport the editor plugin so its architecture is re-detected for the current host.
  2. Reset the OS/CPU compatibility in the plugin inspector to AnyCPU and reapply.
  3. Upgrade/downgrade to match the Unity version that produced the asset.
  4. In a fork, extend the switch to cover the additional enum member.

Example fix

// before: unknown EditorPluginCPUArchitecture -> default throws

// after
imp.SetPlatformData("Editor", "CPU", nameof(EditorPluginCPUArchitecture.AnyCPU));
Defensive patterns

Strategy: type-guard

Validate before calling

if (!Enum.IsDefined(typeof(EditorPluginCPUArchitecture), architecture))
    architecture = EditorPluginCPUArchitecture.AnyCPU;

Type guard

static bool IsKnown(EditorPluginCPUArchitecture a) =>
    a == EditorPluginCPUArchitecture.x86_64 || a == EditorPluginCPUArchitecture.ARM64 ||
    a == EditorPluginCPUArchitecture.AnyCPU;

Prevention

When it happens

Trigger: An EditorPluginCPUArchitecture value outside {x86_64, ARM64, AnyCPU} is deserialized or passed into the CPU label resolver — e.g. a value from a different/newer Unity or a corrupted serialized state.

Common situations: Opening a project on an editor whose host-architecture enum differs (e.g. a build that dropped x86 support). Stale serialized editor-plugin compatibility data after an upgrade.

Related errors


AI-assisted analysis of Unity-Technologies/UnityCsReference@225b0fbdb5 (2026-08-13). Data as JSON: /api/errors/2c6288ed458cb884. Report an issue: GitHub.

Appendix: source

Thrown at Editor/Mono/ImportSettings/EditorPluginImporterExtension.cs:132

                    currentOS = osValue;
                }
            }

            static string GetArchitectureName(EditorPluginOSArchitecture os, EditorPluginCPUArchitecture architecture)
            {
                switch (architecture)
                {
                    case EditorPluginCPUArchitecture.x86_64:
                        return os == EditorPluginOSArchitecture.OSX ? "Intel 64-bit" : "x64";

                    case EditorPluginCPUArchitecture.ARM64:
                        return os == EditorPluginOSArchitecture.OSX ? "Apple silicon" : "Arm64";

                    case EditorPluginCPUArchitecture.AnyCPU:
                        return "Any CPU";

                    default:
                        throw new NotSupportedException("Unknown EditorPluginCPUArchitecture value: " + architecture);
                }
            }
        }

        private CPUProperty editorCPUProperty;
        private EditorProperty editorOSProperty;

        public EditorPluginImporterExtension() : base(null)
        {
            editorCPUProperty = new CPUProperty(EditorGUIUtility.TrTextContent("CPU", "The processor architectiure that this plugin is compatible with"), "CPU", EditorPluginCPUArchitecture.AnyCPU, (Enum e) => CanSelectArch(e));
            editorOSProperty = new EditorProperty(EditorGUIUtility.TrTextContent("OS", "The Editor operating system that this plugin is compatible with"), "OS", EditorPluginOSArchitecture.AnyOS);

            properties = new Property[] { editorOSProperty, editorCPUProperty };
        }

        public override void OnPlatformSettingsGUI(PluginImporterInspector inspector)
        {
            EditorGUI.BeginChangeCheck();

View on GitHub (pinned to 225b0fbdb5)