Errors on using buildpipeline from EditorWindow

Issue #534 resolved
Michael Schneider created an issue

I am using a EditorWindow to automate my builds. With the following script i get errors on building.

namespace BuildPipeline.Editor
{
    using System.Collections.Generic;
    using System.Linq;
    using Sirenix.OdinInspector;
    using Sirenix.OdinInspector.Editor;
    using UnityEditor;
    using UnityEditor.Build.Reporting;
    using UnityEngine;

    public class ServerAndClientBuilderWindow : OdinEditorWindow
    {
        [MenuItem("Tools/Build Server and Client")]
        static void Init()
        {
            ServerAndClientBuilderWindow window = GetWindow<ServerAndClientBuilderWindow>();
            window.Show();
        }

        [Button]
        public void BuildPlayer()
        {
            BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
            buildPlayerOptions.scenes = new[]
            {
                "Assets/Scenes/SampleScene.unity"
            };

            buildPlayerOptions.locationPathName = "builds/Sample.exe";
            buildPlayerOptions.target = BuildTarget.StandaloneWindows64;
            buildPlayerOptions.options = BuildOptions.AutoRunPlayer;

            BuildReport report = BuildPipeline.BuildPlayer(buildPlayerOptions);
            BuildSummary summary = report.summary;

            if (summary.result == BuildResult.Succeeded)
            {
                Debug.Log("Build succeeded: " + summary.totalSize + " bytes");
            }

            if (summary.result == BuildResult.Failed)
            {
                Debug.Log("Build failed");
            }
        }
    }
}

Errors:

UnityVersion: 2019.1.1f1

OdinVersion: 2.0.19

EditorOnlyMode: No

Os: Windows 10

Comments (1)

  1. Tor Esa Vestergaard

    You should not be invoking a build directly from GUI code like a button (unless you finish off with GUIUtility.ExitGUI()), but instead you should do it as a delayed invocation:

    EditorApplication.delayCall += () => { /* Build code here */ };

  2. Log in to comment