{"record":{"id":"4966d67a3a207643","repo":"Unity-Technologies/UnityCsReference","slug":"tiersettings-renderingpath-must-be-actual-renderin","errorCode":null,"errorMessage":"TierSettings.renderingPath must be actual rendering path (not UsePlayerSettings)","messagePattern":"TierSettings\\.renderingPath must be actual rendering path \\(not UsePlayerSettings\\)","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"Editor/Mono/EditorGraphicsSettings.cs","lineNumber":77,"sourceCode":"        public bool             detailNormalMap;\n\n        public bool             cascadedShadowMaps;\n        public bool             prefer32BitShadowMaps;\n        public bool             enableLPPV;\n        public bool             semitransparentShadows;\n\n        public RenderingPath    renderingPath;\n        public RealtimeGICPUUsage realtimeGICPUUsage;\n    }\n\n    public sealed partial class EditorGraphicsSettings\n    {\n        // Use the version with NamedBuildTarget passed instead.\n        // [Obsolete(\"Use SetTierSettings() instead (UnityUpgradable) -> SetTierSettings(*)\", false)]\n        public static void SetTierSettings(BuildTargetGroup target, GraphicsTier tier, TierSettings settings)\n        {\n            if (settings.renderingPath == RenderingPath.UsePlayerSettings)\n                throw new ArgumentException(\"TierSettings.renderingPath must be actual rendering path (not UsePlayerSettings)\", \"settings\");\n\n            SetTierSettingsImpl(target, tier, settings);\n            MakeTierSettingsAutomatic(target, tier, false);\n            OnUpdateTierSettings(target, true);\n        }\n\n        public static void SetTierSettings(NamedBuildTarget target, GraphicsTier tier, TierSettings settings) => SetTierSettings(target.ToBuildTargetGroup(), tier, settings);\n    }\n\n\n    //\n    // deprecated\n    //\n\n    [Obsolete(\"Use TierSettings instead (UnityUpgradable) -> UnityEditor.Rendering.TierSettings\", false)]\n    [StructLayout(LayoutKind.Sequential)]\n    public struct PlatformShaderSettings\n    {","sourceCodeStart":59,"sourceCodeEnd":95,"githubUrl":"https://github.com/Unity-Technologies/UnityCsReference/blob/225b0fbdb57cc17d094e8056b71f8314aba56f73/Editor/Mono/EditorGraphicsSettings.cs#L59-L95","documentation":"Thrown by EditorGraphicsSettings.SetTierSettings when the supplied TierSettings.renderingPath equals RenderingPath.UsePlayerSettings. Tier settings are an explicit, per-tier override, so 'UsePlayerSettings' is a non-answer at this level and would create a meaningless self-reference; the API rejects it.","triggerScenarios":"Building TierSettings programmatically and leaving renderingPath at its default (which is UsePlayerSettings) before calling SetTierSettings. Also copying tier settings from a player-settings-derived struct without overriding the path.","commonSituations":"Editor scripts that programmatically configure graphics tiers for build presets; tooling that snapshots and reapplies tier settings; default-constructed TierSettings passed without field initialization.","solutions":["Set settings.renderingPath to a concrete RenderingPath value (e.g. Deferred, Forward, VertexLit) before calling SetTierSettings.","Read the current tier settings via GetTierSettings, modify only the fields you intend, then write back so renderingPath is already concrete.","Validate the enum against the allowed subset before the call."],"exampleFix":"// before\nvar ts = new TierSettings { /* renderingPath defaults to UsePlayerSettings */ };\nEditorGraphicsSettings.SetTierSettings(target, tier, ts);\n\n// after\nvar ts = EditorGraphicsSettings.GetTierSettings(target, tier);\nts.renderingPath = RenderingPath.Deferred;\nEditorGraphicsSettings.SetTierSettings(target, tier, ts);","handlingStrategy":"validation","validationCode":"if (settings.renderingPath == RenderingPath.UsePlayerSettings) { settings.renderingPath = RenderingPath.Forward; /* pick a concrete default */ }","typeGuard":"static bool IsValidTierRenderingPath(RenderingPath p) => p != RenderingPath.UsePlayerSettings;","tryCatchPattern":null,"preventionTips":["Start from GetTierSettings and modify fields, rather than default-constructing TierSettings.","Explicitly set renderingPath to a concrete value before SetTierSettings.","Validate the renderingPath enum subset in build-configuration tooling."],"tags":["csharp","unity-editor","graphics","tier-settings","validation"],"backgroundTag":null,"analyzedSha":"225b0fbdb57cc17d094e8056b71f8314aba56f73","analyzedAt":"2026-08-13T19:07:19.849Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}