こんにちは。

Unityでゲーム制作をしているときに
「Build&RunじゃなくてBuildだけできるようにならんかなー」と思ったので、
これをちょっとイジって作ってみました。

[Unity]Editor拡張でBuildをする - Qiita


こちらの方は丁寧に設定画面を出して色々指定してビルドができるようですが、
もっと雑でよかったのでクリック2発だけでビルドできるようにしてみました。
(ただし柔軟性はない)


最短ビルドを実現するためにパラメーター類は
ソースコード直埋めのストロングスタイルです。
pathとbuildTypeNumを置き換えて使用してください。
Asset以下のEdiorフォルダに置けば
自動的にUnityのメニューバーに「ビルド」という項目が現れるので、
さらに「ビルド」を選ぶとビルドが走ります。 
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

public class DirectBuild : MonoBehaviour
{

	enum Platform { MacOS, Windows, WebGL, iOS, Android };

	static string buildName = PlayerSettings.productName;

	static string path = "D:/User/Documents/unity/hoge"; //フルパス

	static int buildTypeNum = (int)Platform.Windows;

	[MenuItem("ビルド/ビルド" , false , 0)]
	public static void StartBuild ()
	{
		if (path == "")
		{
			Debug.LogError("pathが指定されていません。");
		}
		else
		{
			Debug.LogError("path " + path);
			// ビルド
			BuildPlatform(buildTypeNum , path);
		}
	}

	//シーンリスト取得
	static string[] GetEnabledScenes ()
	{
		List sceneList = new List();

		// "Scenes In Build"に登録されているシーンリストを取得
		EditorBuildSettingsScene[] scenes = EditorBuildSettings.scenes;
		foreach (EditorBuildSettingsScene scene in scenes)
		{
			// チェックがついているか確認
			if (scene.enabled)
			{
				// リストに加える
				sceneList.Add(scene.path);
			}
		}
		// 配列にして返す
		return sceneList.ToArray();
	}


	//ビルドプラットフォーム
	static void BuildPlatform ( int num , string path )
	{
		if (num == 0)
		{
			//MacOS
			string errorMessage = BuildPipeline.BuildPlayer(
					// ビルド対象シーンリスト
					GetEnabledScenes() ,   
					// 出力先             
					path + "/" + buildName + ".exe" ,   
					// ビルド対象プラットフォーム
					BuildTarget.StandaloneOSX , 
					// ビルドオプション
					BuildOptions.Development            
			);
		}
		else if (num == 1)
		{
			//Windows
			string errorMessage = BuildPipeline.BuildPlayer(
					GetEnabledScenes() ,  
					path + "/" + buildName + ".exe" , 
					BuildTarget.StandaloneWindows , 
					BuildOptions.Development 
			);
		}
		else if (num == 2)
		{
			//WebGL
			string errorMessage = BuildPipeline.BuildPlayer(
					GetEnabledScenes() ,
					path + "/" + buildName , 
					BuildTarget.WebGL , 
					BuildOptions.Development
			);
		}
		else if (num == 3)
		{
			//iOS
			string errorMessage = BuildPipeline.BuildPlayer(
					GetEnabledScenes() , 
					path + "/" + buildName , 
					BuildTarget.iOS , 
					BuildOptions.Development 
			);
		}
		else if (num == 4)
		{
			//Android
			string errorMessage = BuildPipeline.BuildPlayer(
					GetEnabledScenes() , 
					path + "/" + buildName + ".apk" ,  
					BuildTarget.Android , 
					BuildOptions.Development 
			);
		}
	}
}