Unity-Technologies/UnityCsReference · error · UnityException

Launching for build target {buildTarget} is not supported: T

Error message

Launching for build target {buildTarget} is not supported: There is no build post-processor available.

What it means

Raised by the launch path in PostprocessBuildPlayer when ModuleManager.GetBuildPostProcessor(buildTarget) returns null at launch time, meaning no platform module registered a post-processor capable of launching the player for that target.

Source

Thrown at Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:214

            {
                BuildLaunchPlayerArgs args;
                args.target = buildTarget;
                args.playerPackage = BuildPipeline.GetPlaybackEngineDirectory(buildTarget, options);
                args.installPath = path;
                args.productName = productName;
                args.options = options;
                args.report = buildReport;

                var launchResult = postprocessor.LaunchPlayer(args);
                // If platform didn't provide any platform specific results, at the very least provide default implementation
                if (launchResult == null)
                    launchResult = new DefaultLaunchReport(NamedBuildTarget.FromActiveSettings(buildTarget), LaunchResult.Unknown);

                BuildPipelineInterfaces.OnPostprocessLaunch(launchResult);
            }
            else
            {
                throw new UnityException(
                    $"Launching for build target {buildTarget} is not supported: There is no build post-processor available.");
            }
        }

        public static LaunchResult GetLaunchResult(IReadOnlyList<IDeploymentLaunchResult> deploymentLaunchResults)
        {
            var successLaunches = 0;
            foreach (var r in deploymentLaunchResults)
            {
                if (r.Success)
                    successLaunches++;
            }

            if (successLaunches == 0)
                return LaunchResult.Failed;
            if (successLaunches == deploymentLaunchResults.Count)
                return LaunchResult.Succeeded;
            return LaunchResult.PartiallySucceeded;

View on GitHub (pinned to 225b0fbdb5)

Solutions

  1. Install the target's build support module via Unity Hub / Module Manager before launching.
  2. Use 'Build' instead of 'Build and Run' for targets without launch support, then deploy/launch manually.
  3. Confirm GetBuildPostProcessor returns non-null before attempting to launch.

Example fix

// before
PostprocessBuildPlayer.LaunchPlayer(buildTarget, ...);

// after
if (ModuleManager.GetBuildPostProcessor(buildTarget) == null)
    EditorUtility.DisplayDialog("Launch", $"No launch support for {buildTarget}. Install the module or build only.", "OK");
else
    PostprocessBuildPlayer.LaunchPlayer(buildTarget, ...);
Defensive patterns

Strategy: validation

Validate before calling

if (ModuleManager.GetBuildPostProcessor(buildTarget) == null)
    throw new UnityException($"No build post-processor for {buildTarget}; install the module or build-only.");

Type guard

static bool CanLaunch(BuildTarget t) => ModuleManager.GetBuildPostProcessor(t) != null;

Prevention

When it happens

Trigger: Calling LaunchPlayer/Launch for a build target whose platform module is not installed or does not implement IBuildPostprocessor.LaunchPlayer; the build target's support module is missing from the editor install.

Common situations: Trying to launch (Run) a build for a target whose support module was never added (e.g. console NDA modules not present); launching for a target that can build but cannot be auto-launched from the editor.

Related errors


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