{"record":{"id":"80d69da91c00daf5","repo":"Unity-Technologies/UnityCsReference","slug":"unknown-image-scale-scale","errorCode":null,"errorMessage":"Unknown image scale: {scale}","messagePattern":"Unknown image scale: (.+?)","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"Editor/Mono/PlayerSettingsWSA.cs","lineNumber":63,"sourceCode":"            }\n\n            internal static void ValidateWSAImageScale(WSAImageScale scale)\n            {\n                switch (scale)\n                {\n                    case WSAImageScale._100:\n                    case WSAImageScale._125:\n                    case WSAImageScale._150:\n                    case WSAImageScale._200:\n                    case WSAImageScale._400:\n                    case WSAImageScale.Target16:\n                    case WSAImageScale.Target24:\n                    case WSAImageScale.Target32:\n                    case WSAImageScale.Target48:\n                    case WSAImageScale.Target256:\n                        return;\n                    default:\n                        throw new Exception(\"Unknown image scale: \" + scale);\n                }\n            }\n\n            public static string GetVisualAssetsImage(WSAImageType type, WSAImageScale scale)\n            {\n                ValidateWSAImageType(type);\n                ValidateWSAImageScale(scale);\n                return GetWSAImage(type, scale);\n            }\n\n            public static void SetVisualAssetsImage(string image, WSAImageType type, WSAImageScale scale)\n            {\n                ValidateWSAImageType(type);\n                ValidateWSAImageScale(scale);\n                SetWSAImage(image, type, scale);\n            }\n\n            public static System.Version packageVersion","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/Unity-Technologies/UnityCsReference/blob/225b0fbdb57cc17d094e8056b71f8314aba56f73/Editor/Mono/PlayerSettingsWSA.cs#L45-L81","documentation":"ValidateWSAImageScale throws System.Exception with \"Unknown image scale: <scale>\" when a WSAImageScale value is outside the ten handled cases (_100, _125, _150, _200, _400, Target16, Target24, Target32, Target48, Target256). It is invoked by GetVisualAssetsImage and SetVisualAssetsImage. The default branch is defensive: it triggers when a caller casts an arbitrary integer to WSAImageScale or forwards an enum member from a newer/older engine build that this switch does not recognize.","triggerScenarios":"Passing (WSAImageScale)99 to Get/SetVisualAssetsImage; deserializing a scale from JSON as an int and casting it; running code compiled against a Unity version whose WSAImageScale enum has members not in this switch.","commonSituations":"Build pipelines that read tile-image scale overrides from config files. Tooling that iterates enum values numerically. Engine/script version skew.","solutions":["Validate WSAImageScale with Enum.IsDefined and an explicit allow-list before calling Get/SetVisualAssetsImage.","Never cast raw ints to WSAImageScale; use named members only.","Sanitize deserialized scale values against the supported set.","Keep the calling assembly on the same Unity version as the editor so the enum shape matches."],"exampleFix":"// before\nvar img = PlayerSettings.WSA.GetVisualAssetsImage(WSAImageType.PackageLogo, (WSAImageScale)scaleInt);\n\n// after — guard the scale\nWSAImageScale scale = (WSAImageScale)scaleInt;\nvar allowed = new[] { WSAImageScale._100, WSAImageScale._125, WSAImageScale._150,\n                      WSAImageScale._200, WSAImageScale._400, WSAImageScale.Target16,\n                      WSAImageScale.Target24, WSAImageScale.Target32,\n                      WSAImageScale.Target48, WSAImageScale.Target256 };\nif (!Enum.IsDefined(typeof(WSAImageScale), scale) || !allowed.Contains(scale))\n    throw new ArgumentOutOfRangeException(nameof(scale), scale, \"Unsupported WSAImageScale\");\nvar img = PlayerSettings.WSA.GetVisualAssetsImage(WSAImageType.PackageLogo, scale);","handlingStrategy":"validation","validationCode":"static readonly HashSet<WSAImageScale> AllowedScales = new HashSet<WSAImageScale>\n{\n    WSAImageScale._100, WSAImageScale._125, WSAImageScale._150, WSAImageScale._200,\n    WSAImageScale._400, WSAImageScale.Target16, WSAImageScale.Target24,\n    WSAImageScale.Target32, WSAImageScale.Target48, WSAImageScale.Target256,\n};\n\nstatic bool IsValid(WSAImageScale s) => Enum.IsDefined(typeof(WSAImageScale), s) && AllowedScales.Contains(s);\n\nif (!IsValid(scale)) throw new ArgumentOutOfRangeException(nameof(scale), scale, \"Unsupported WSAImageScale\");\nvar img = PlayerSettings.WSA.GetVisualAssetsImage(WSAImageType.PackageLogo, scale);","typeGuard":"static bool IsSupportedWSAImageScale(WSAImageScale s)\n{\n    switch (s)\n    {\n        case WSAImageScale._100:\n        case WSAImageScale._125:\n        case WSAImageScale._150:\n        case WSAImageScale._200:\n        case WSAImageScale._400:\n        case WSAImageScale.Target16:\n        case WSAImageScale.Target24:\n        case WSAImageScale.Target32:\n        case WSAImageScale.Target48:\n        case WSAImageScale.Target256:\n            return true;\n        default:\n            return false;\n    }\n}","tryCatchPattern":"if (!IsSupportedWSAImageScale(scale))\n    throw new ArgumentOutOfRangeException(nameof(scale), scale, \"Unsupported WSAImageScale\");\n\ntry { var img = PlayerSettings.WSA.GetVisualAssetsImage(type, scale); }\ncatch (System.Exception ex) when (ex.Message.StartsWith(\"Unknown image scale\"))\n{\n    UnityEngine.Debug.LogError(ex.Message);\n}","preventionTips":["Use named WSAImageScale members only; never cast raw ints.","Validate with Enum.IsDefined and an allow-list before calling the visual-assets API.","Revalidate deserialized scale values from config files.","Keep scripts and editor on the same Unity version."],"tags":["unity","wsa","uwp","enum","validation","playersettings","editor-only","switch-default"],"backgroundTag":null,"analyzedSha":"225b0fbdb57cc17d094e8056b71f8314aba56f73","analyzedAt":"2026-08-13T19:07:19.849Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}