public void Run() { EditorPrefs.SetString(BuildUtility.GetLastSettingsKey <EditorPlaySettings>(), m_Id); if (m_RunScene == null) { Debug.LogWarning(string.Format("No run scene linked in settings {0}.", name), this); return; } EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo(); PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, m_Defines); EditorUtility.RequestScriptReload(); m_PreRunEvent.Invoke(); EditorSceneManager.OpenScene(AssetDatabase.GetAssetPath(m_RunScene)); EditorApplication.isPlaying = true; }
public void Run(bool deploy) { PlayerPrefs.SetString(BuildUtility.GetLastSettingsKey <PlayerBuildSettings>(), m_Id); AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); List <string> scenes = new List <string>(m_Scenes.Length); for (int i = 0; i < m_Scenes.Length; i++) { SceneAsset sceneAsset = m_Scenes[i]; if (sceneAsset == null) { throw new BuildException("Missing scene asset reference in BuildSettings. Has this scene been deleted?"); } scenes.Add(AssetDatabase.GetAssetPath(sceneAsset)); } if (scenes.Count == 0) { throw new BuildException("No scene asset references in BuildSettings. At least one scene must be added when building a player."); } BuildOptions buildOptions = BuildOptions.None; if (m_IsDevelopment) { buildOptions |= BuildOptions.Development; buildOptions |= BuildOptions.AllowDebugging; } if (deploy) { buildOptions |= BuildOptions.AutoRunPlayer; } var settingsCache = new Dictionary <string, object>(); try { PushPlayerSettings(settingsCache); PreProcessBuild(); BuildManifest manifest = CreateOrUpdateBuildManifest(); string outputPath = GetOutputPath(manifest); string buildPath = PrepareBuildPath(outputPath); PushManifestPlayerSettings(settingsCache, manifest); #if UNITY_2018_1_OR_NEWER BuildReport report = BuildPipeline.BuildPlayer(scenes.ToArray(), buildPath, BuildTarget, buildOptions); if (report.summary.result == BuildResult.Failed) { throw new BuildException("Build player FAILED: BuildResult is Failed"); } if (report.summary.totalErrors > 0 && m_FailBuildOnErrors) { throw new BuildException($"Build player FAILED: {report.summary.totalErrors} error(s)"); } #else string error = BuildPipeline.BuildPlayer(scenes.ToArray(), buildPath, BuildTarget, buildOptions); if (!string.IsNullOrEmpty()) { throw new BuildException("Build player FAILED: " + error); } #endif PostProcessBuild(outputPath); } finally { PopPlayerSettings(settingsCache); } }