{"record":{"id":"90c69ac289716656","repo":"Unity-Technologies/UnityCsReference","slug":"attempting-to-set-an-incorrect-number-of-icons-for-90c69a","errorCode":null,"errorMessage":"Attempting to set an incorrect number of icons for {buildTarget.TargetName} {kind} kind, it requires {requiredIconCount} icons but trying to assign {icons.Length}.","messagePattern":"Attempting to set an incorrect number of icons for (.+?) (.+?) kind, it requires (.+?) icons but trying to assign (.+?)\\.","errorType":"validation","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"Editor/Mono/PlatformSupport/PlayerSettingsPlatformIcons.bindings.cs","lineNumber":345,"sourceCode":"        public static void SetPlatformIcons(NamedBuildTarget buildTarget, PlatformIconKind kind, PlatformIcon[] icons)\n        {\n            if (!BuildTargetDiscovery.TryGetBuildTarget(BuildPipeline.GetBuildTargetByName(buildTarget.TargetName), out var iBuildTarget))\n                return;\n\n            var requiredIcons = iBuildTarget.IconPlatformProperties?.GetRequiredPlatformIcons();\n            if (requiredIcons == null)\n                return;\n\n            var requiredIconCount = PlatformIcon.GetRequiredPlatformIconsByType(kind, requiredIcons).Length;\n\n            PlatformIconStruct[] iconStructs;\n            if (icons == null)\n            {\n                iconStructs = Array.Empty<PlatformIconStruct>();\n            }\n            else if (requiredIconCount != icons.Length)\n            {\n                throw new InvalidOperationException($\"Attempting to set an incorrect number of icons for {buildTarget.TargetName} {kind} kind, it requires {requiredIconCount} icons but trying to assign {icons.Length}.\");\n            }\n            else\n            {\n                iconStructs = Array.ConvertAll(icons, i => i.GetPlatformIconStruct());\n            }\n\n            SetPlatformIconsInternal(buildTarget.TargetName, iconStructs, kind.kind);\n        }\n\n        [Obsolete(\"Use GetSupportedIconKinds(NamedBuildTarget) instead\")]\n        public static PlatformIconKind[] GetSupportedIconKindsForPlatform(BuildTargetGroup platform) =>\n            GetSupportedIconKinds(NamedBuildTarget.FromBuildTargetGroup(platform));\n\n        public static PlatformIconKind[] GetSupportedIconKinds(NamedBuildTarget buildTarget)\n        {\n            if (BuildTargetDiscovery.TryGetBuildTarget(BuildPipeline.GetBuildTargetByName(buildTarget.TargetName), out var iBuildTarget))\n            {\n                var requiredIcons = iBuildTarget.IconPlatformProperties?.GetRequiredPlatformIcons();","sourceCodeStart":327,"sourceCodeEnd":363,"githubUrl":"https://github.com/Unity-Technologies/UnityCsReference/blob/225b0fbdb57cc17d094e8056b71f8314aba56f73/Editor/Mono/PlatformSupport/PlayerSettingsPlatformIcons.bindings.cs#L327-L363","documentation":"Thrown when setting platform icons for a specific build target and icon kind, and the number of PlatformIcon objects provided does not equal the required count returned by PlatformIcon.GetRequiredPlatformIconsByType. Each (buildTarget, kind) pair has a fixed required number of icons, and this method enforces that the array length matches exactly before forwarding to the native SetPlatformIconsInternal.","triggerScenarios":"Calling SetPlatformIcons (or the property setter that invokes it) with an icons array whose Length != requiredIconCount for that build target and kind. Occurs when the caller builds the icon array for one platform/kind and applies it to a different one with a different required count.","commonSituations":"Editor scripts that bulk-configure icons across platforms; copying icon arrays between build targets; Unity version upgrades that change the required icon count for a platform; custom build pipelines that don't query the required count per kind.","solutions":["Query the required count first: var required = PlatformIcon.GetRequiredPlatformIconsByType(kind, availableIcons); and size your array to match before calling set.","Fetch the correct icon set per build target/kind using GetIcons(NamedBuildTarget) or GetIconsForPublishing to get properly-sized arrays.","Avoid reusing icon arrays across platforms — each (target, kind) pair may require a different number of icons."],"exampleFix":"// before\nSetPlatformIcons(buildTarget, kind, myIcons); // length mismatch\n\n// after\nvar requiredCount = PlatformIcon.GetRequiredPlatformIconsByType(kind, availableIcons).Length;\nif (myIcons.Length == requiredCount)\n    SetPlatformIcons(buildTarget, kind, myIcons);","handlingStrategy":"validation","validationCode":"var requiredCount = PlatformIcon.GetRequiredPlatformIconsByType(kind, availableIcons).Length;\nif (icons != null && icons.Length == requiredCount)\n    SetPlatformIcons(buildTarget, kind, icons);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Query the required icon count per (buildTarget, kind) before assembling your array.","Use GetIcons(NamedBuildTarget) to fetch properly-sized icon arrays per platform.","Never reuse icon arrays across platforms with different required counts."],"tags":["unity-editor","player-settings","platform-icons","invalid-operation","build-target"],"backgroundTag":null,"analyzedSha":"225b0fbdb57cc17d094e8056b71f8314aba56f73","analyzedAt":"2026-08-13T19:07:19.849Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}