Unity-Technologies/UnityCsReference · error · BuildFailedException
The current build target has assets in its associated Qualit
Error message
The current build target has assets in its associated Quality levels and Graphics Settings that belong to different render pipelines. Please check your settings.
What it means
EnsureSinglePipelineOnBuild is an IPreprocessBuildWithReport callback that runs before the build. It checks QualitySettings.SamePipelineAssetsForPlatform for the active target group; if Quality levels and Graphics Settings reference assets from different render pipelines (e.g. mixing URP and Built-in), it aborts the build with BuildFailedException.
Source
Thrown at Editor/Mono/BuildPipeline/RenderPipeline/EnsureSinglePipelineOnBuild.cs:18
// Unity C# reference source
// Copyright (c) Unity Technologies. For terms of use, see
// https://unity3d.com/legal/licenses/Unity_Reference_Only_License
using UnityEditor.Build.Reporting;
using UnityEngine;
namespace UnityEditor.Build.Rendering
{
class EnsureSinglePipelineOnBuild : IPreprocessBuildWithReport
{
public int callbackOrder => (int) ExecutionOrder.EnsureSinglePipeline;
public void OnPreprocessBuild(BuildReport report)
{
var buildTargetGroupName = BuildPipeline.GetBuildTargetGroupName(EditorUserBuildSettings.activeBuildTarget);
if (!QualitySettings.SamePipelineAssetsForPlatform(buildTargetGroupName))
throw new BuildFailedException($"The current build target has assets in its associated Quality levels and Graphics Settings that belong to different render pipelines. Please check your settings.");
}
}
}
View on GitHub (pinned to 225b0fbdb5)
Solutions
- Open Project Settings > Quality and Project Settings > Graphics and ensure all referenced RenderPipelineAssets use the same pipeline for the target platform.
- Remove or replace stale pipeline asset references left from a previous pipeline.
- After fixing, re-run the build; the preprocess check will pass.
Example fix
/* no source edit; project fix */ // before: Quality level 'High' references Built-in, Graphics references URP -> build aborts // after: set every Quality level + Graphics Settings to the same URP/HDRP asset for the platform
Defensive patterns
Strategy: validation
Validate before calling
var groupName = BuildPipeline.GetBuildTargetGroupName(EditorUserBuildSettings.activeBuildTarget);
if (!QualitySettings.SamePipelineAssetsForPlatform(groupName))
Debug.LogError("Quality levels and Graphics Settings use different render pipelines; reconcile before building."); Prevention
- Keep all Quality levels and Graphics Settings on the same render pipeline asset.
- After installing/changing URP/HDRP, audit Quality and Graphics settings per platform.
When it happens
Trigger: OnPreprocessBuild runs and QualitySettings.SamePipelineAssetsForPlatform(buildTargetGroupName) returns false because at least one Quality level or the Graphics Settings references a render pipeline asset inconsistent with the others for that platform.
Common situations: Project migrated to URP/HDRP but a Quality level still references a Built-in RP asset (or vice versa); package installed that changed the active RP without reconciling Quality/Graphics settings; per-platform overrides pointing at mixed pipelines.
Related errors
- IRenderPipelineGraphicsSettings is not assignable from rende
- ${renderPipelineType} must be a valid ${RenderPipeline}
- get function cannot be null
- set function cannot be null
- The propertyPath argument can't be null or empty.
AI-assisted analysis of Unity-Technologies/UnityCsReference@225b0fbdb5 (2026-08-13).
Data as JSON: /api/errors/f570d17ecab96113.
Report an issue: GitHub.