Version: 2018.4
言語: 日本語
ビルドプレイヤーパイプライン
バッチモードとビルトインコルーチンの互換性

コマンドライン引数

Unity をコマンドラインで実行できます (macOS では ターミナル、Windows では コマンドプロンプト)。

macOS で Unity を起動するには、以下をターミナルに入力します。

/Applications/Unity/Unity.app/Contents/MacOS/Unity

Windows で Unity を起動するには、以下をコマンドプロンプトに入力します。

C:\Program Files\Unity\Editor\Unity.exe

このように起動すると、Unity は起動時にコマンドと引数を受け取ります。これは、テストスイート、自動ビルド、他のプロダクションタスクに非常に役立ちます。 ノート: 同じ方法を使用してスタンドアロンの Unity ゲームを起動できます。

サイレントモードで Unity を起動

macOS で Unity をサイレントモードで起動するには、ターミナル に以下を入力します。

/Applications/Unity/Unity.app/Contents/MacOS/Unity -quit -batchmode -serial SB-XXXX-XXXX-XXXX-XXXX-XXXX -username 'JoeBloggs@example.com' -password 'MyPassw0rd'

ノート: Jenkins のような継続的インテグレーション (CI) ツールを使って、コマンドラインを通してアクティベーションする場合、 WindowServer エラーを避けるために -nographics フラグを加えてください。

Windows で Unity をサイレントモードで起動するには、コマンドプロンプト に以下を入力します。

"C:\Program Files\Unity\Editor\Unity.exe" -quit -batchmode -serial SB-XXXX-XXXX-XXXX-XXXX-XXXX -username "JoeBloggs@example.com" -password "MyPassw0rd"

ライセンスをライセンスサーバーに返却

macOS で ライセンスを返却するには、以下を ターミナル に入力します。

/Applications/Unity/Unity.app/Contents/MacOS/Unity -quit -batchmode -returnlicense

Windows で ライセンスを返却するには、以下を コマンドプロンプト に入力します。

"C:\Program Files\Unity\Editor\Unity.exe" -quit -batchmode -returnlicense

アクティベーションファイルを作成し、コマンドでライセンスファイルをインポート

macOS では、Terminal に以下を入力します。

/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -createManualActivationFile -logfile

/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -manualLicenseFile <yourulffile> -logfile

Windows では、コマンドプロンプト に以下を入力します。

"C:\Program Files\Unity\Editor\Unity.exe" -batchmode -createManualActivationFile -logfile

"C:\Program Files\Unity\Editor\Unity.exe" -batchmode -manualLicenseFile <yourulffile> -logfile

詳細については、手動アクティベーションガイド を参照してください。

オプション

エディターとビルドされたゲームは、起動時に追加のコマンドと情報とともに実行できます。このセクションでは、可能なコマンドラインオプションを説明します。

オプション 説明
-assetServerUpdate <IP[:port] projectName username password [r <revision>]> IP:port で指定された アセットサーバー のプロジェクトを強制的に更新します。ポート情報は任意であり、ない場合は標準のポート (10733) を使用します。このコマンドは、正しいプロジェクトで作業していることを確認するために -projectPath 引数と組み合わせて使用することが推奨されます。プロジェクト名を指定しない場合は、Unity で最後に開いたプロジェクトが使用されます。-projectPath で指定するプロジェクトが存在しない場合は、自動的に新しいプロジェクトが作成されます。
-batchmode Unity をバッチモードで実行します。常に他のコマンドライン引数とともに使用してください。そうすることで、ポップアップウィンドウの表示を防ぎ、人間の介入を必要とさせないようにできます。スクリプトコードの実行中に例外が発生した場合、アセットサーバーの更新が失敗したり、他の操作が失敗した場合、Unity はただちにリターンコード 1 を送信して終了します。
バッチモードでは、Unity はログ出力の最小バージョンをコンソールに送信します。ただし、ログファイル には完全なログ情報が含まれます。エディターが同じプロジェクトを開いている間は、プロジェクトをバッチモードで開くことはできません。 Unityのインスタンスは1度に1つしか実行できません。
ヒント: バッチモードでエディターとスタンドアロンプレイヤーのどちらを実行しているかを確認するには、Application.isBatchMode 演算子を使用します。

-batchmode を使用するときにプロジェクトがまだインポートされていない場合は、ターゲットプラットフォームはデフォルトのプラットフォームです。 -batchmode を使用するときに別のプラットフォームを強制的に使用するには、-buildTarget オプションを使用します。
-buildLinux32Player <pathname> 32-bit スタンドアロン Linux player をビルドします (例えば、-buildLinux32Player path/to/your/build)。
-buildLinux64Player <pathname> 64-bit スタンドアロン Linux player をビルドします (例えば、-buildLinux64Player path/to/your/build)。
-buildLinuxUniversalPlayer <pathname> 32-bit および 64-bit を組み合わせた Linux player をビルドします (例えば -buildLinuxUniversalPlayer path/to/your/build)。
-buildOSXPlayer <pathname> 32-bit スタンドアロン Mac OS X player をビルドします (例えば、-buildOSXPlayer path/to/your/build.app)。
-buildOSX64Player <pathname> 64-bit スタンドアロン Mac OS X player をビルドします (例えば、-buildOSX64Player path/to/your/build.app)。
-buildOSXUniversalPlayer <pathname> 32-bit および 64-bit を組み合わせた Mac OS X player をビルドします (例えば、-buildOSXUniversalPlayer path/to/your/build.app)。
-buildTarget <name> プロジェクトをロードする前にアクティブなビルドターゲットを選択できます。可能なオプションは以下のとおりです。
Standalone、Win、Win64、OSXUniversal、Linux、Linux64、LinuxUniversal、iOS、Android、Web、WebStreamed、WebGL、XboxOne、PS4、WindowsStoreApps、Switch、N3DS、tvOS。
-buildWindowsPlayer <pathname> 32bit スタンドアロン Windows プレイヤーをビルドします (例えば、-buildWindowsPlayer path/to/your/build.exe )。
-buildWindows64Player <pathname> 64bit スタンドアロン Windows player をビルドします (例えば、-buildWindows64Player path/to/your/build.exe )。
-stackTraceLogType 詳細なデバッグ機能。 stackTraceLogging を使うと、詳細なログ記録が可能になります。すべての設定で、 NoneScript OnlyFull が選択可能です (例えば -stackTraceLogType Full)。
-CacheServerIPAddress <host:port> 起動時に指定したキャッシュサーバーに接続し、エディターの Preferences に格納されている設定をオーバーライドします。これを使用して、Unity の複数のインスタンスを異なるキャッシュサーバーに接続します。
-createProject <pathname> 特定のパスに空のプロジェクトを作成
-editorTestsCategories エディターテストをカテゴリーでフィルタリングします。テストカテゴリーはカンマで区切ってください。
-editorTestsFilter エディターテストを名前でフィルタリングします。テスト名はカンマで区切ってください。
-editorTestsResultFile 結果のファイルの保存先のパス。パスがフォルダーの場合は、コマンドラインはデフォルトファイル名を使用します。指定がない場合は、結果ファイルはプロジェクトのルートフォルダーに保存されます。
-executeMethod <ClassName.MethodName> Unity がプロジェクトを開いて、オプショナルなアセットサーバーの更新が完了した後に、この static メソッドを実行します。このコマンドは、継続的インテグレーション、ユニットテストの実施、ビルド作成、データ準備などのタスクを行うために使用します。コマンドライン処理のエラー結果が必要な場合は、例外を投げて Unity を戻り値 1 で終了させるか、ゼロ以外の戻り値を返すコード EditorApplication.Exit を呼び出します。パラメーターを渡したい場合は、コマンドラインにそれらを加えSystem.Environment.GetCommandLineArgs を使用して関数内で取得します。-executeMethod を使用する場合、加えるスクリプトを任意の Editor フォルダーに置かなければなりません。実行するメソッドは必ず static でなければなりません。
-exportPackage <exportAssetPath1 exportAssetPath2 ExportAssetPath3 exportFileName> 指定したパス (または複数の指定したパス) にエクスポート。この場合では exportAssetPath は Unity プロジェクトからエクスポートするフォルダー (Unity プロジェクトのルートディレクトリに対する相対パス) であり、exportFileName はパッケージの名前です。現在、このオプションはフォルダー全体の単位でしかエクスポート出来ません。通常このコマンドは -projectPath 引数と一緒に使用する必要があります。
-force-d3d11(Windowsのみ) レンダリングに Direct3D 11 を使用します。通常、グラフィックス API は Player 設定の値に依存します (通常、デフォルトは D3D11 です)。
-force-device-index Metal を使用する場合に、GPU のインデックスを渡すことによって、エディターに特定の GPU デバイスを使用させます(macOS のみ)。
-force-gfx-metal デフォルトのグラフィックス API として Metal を使用させます(macOS のみ)。
-force-glcore レンダリングに OpenGL 3/4 コアプロファイルを使用します。エディターは、利用可能でベストな OpenGL バージョンと、OpenGL ドライバがアクセスできるすべての OpenGL 拡張の利用を試みます。そのプラットフォームがサポートされていない場合は、Direct3D を使用します。
-force-glcoreXY -force-glcore と同じですが、OpenGL のバージョンを指定することができます。XYに指定できる値は、「32、33、40、41、42、43、44、54」です。
-force-gles(Windowsのみ) レンダリングで端末の OpenGL を使用します。エディターは、ベストな OpenGL ES バージョンと、OpenGL ドライバから利用可能なすべての OpenGL ES 拡張の利用を試みます。
-force-glesXY(Windowsのみ) -force-gles と同じですが、OpenGL ES のコンテキストバージョンをリクエストすることができます。XYに指定できる値は、「30、31、32」です。
-force-clamped -force-glcoreXY と一緒に使用することにより、追加された OpenGL 拡張の確認を避けることができます。これにより、同じコードパスで複数のプラットフォーム間で実行できます。
-force-free Unity Pro ライセンスがインストールされていても、マシン上に無料 Unity ライセンスがあるかのようにエディターを動作させます。
-force-low-power-device Metal を使用する場合に、低消費電力のデバイスを使用させます (macOS のみ)。
-importPackage <pathname> 特定の パッケージ をインポートします。インポートダイアログは表示されません。
-logFile <pathname> エディターまたは Windows/Linux/OSX スタンドアロンのログファイルの保存場所を指定します。パスを指定しない場合は、OSX と Linux はコンソールに出力します。 Windows は %LOCALAPPDATA%\Unity\Editor\Editor.log をデフォルトのパスに使用します。
-nographics バッチモードを実行する時、グラフィックスデバイスの初期化をまったく行わないようにします。これによって、GPU のないマシンで自動化されたワークフローを実行出来るようになります (自動化されたワークフローは、ウィンドウにフォーカスがあるときのみ機能し、そうでない場合はシミュレーションされた入力コマンドは送信出来ません)。Enlighten には GPU アクセラレーション が必須なため、-nographics コマンドを使用した GI のベイクは行えません。
-noUpm Unity Package Manager を無効にします。
-password <password> Unity エディターのアクティベーションのときに、ログインフォームにパスワードを入力します。
-projectPath <pathname> 指定したパスのプロジェクトを開きます。
-quit コマンドの実行が終了した後に Unity エディターを終了します。これによりエラーメッセージが表示されなくなる場合があることに注意してください (ただし、エラーメッセージは Editor.log ファイルには保存されます)。
-returnlicense 現在有効なライセンスをライセンスサーバーに返します。Unity がライセンスサーバーと通信する必要があるため、ライセンスファイルが削除されるまで数秒かかります。
-runEditorTests プロジェクトのエディターテストを実行します。これには projectPath を必要とし、 batchmode 引数と一緒に実行するとより効果的です。終了するとエディターは自動的に閉じるので quit は必要ありません。
-serial <serial> 指定されたシリアルキーで Unity の認証を行います。これを Unity の自動アクティベーションとして使用する場合は、実行後 Unity を終了するために -batchmode と一緒に -quit 引数も渡すようにしてください。また、Unity がライセンスサーバーと通信する必要があるため、ライセンスファイルを作成するまでに数秒かかるかもしれません。この引数で Unity を実行する前に、ライセンスファイルのフォルダーが存在し、フォルダーに適切な許可があることを確認してください。アクティベーションに失敗した場合は Editor.log ファイルで情報を確認できます。
-setDefaultPlatformTextureFormat テクスチャをインポートしたりプロジェクトをビルドする前に、デフォルトのテクスチャ圧縮を目的の形式に設定します。これはテクスチャを必要な形式で再度インポートする必要がないためです。使用可能な形式は dxt、pvrtc、atc、etc、etc2、astc です。
これは Android でのみサポートされていることに注意してください。
-silent-crashes スタンドアロンプレーヤーがクラッシュしたときに表示されるダイアログを Unity が表示しないようにします。 この引数は、プレイヤーを自動化されたビルドやテストで実行したい場合に便利です (ダイアログによって自動化された手順が妨げられるのを防ぎます)。
-username <username> Unity エディターのアクティベーションのときに、ログインフォームにユーザー名を入力します。
-disable-assembly-updater <assembly1 assembly2> Unity の自動アップデート時に無視するアセンブリ名をスペースで区切ったリストにし、パラメーターとして指定します。
スペースで区切ったアセンブリ名のリストはオプショナルです。例 1 のように、コマンドラインにアセンブリ名を渡さなければ、すべてのアセンブリが無視されます。

例 1
unity.exe -disable-assembly-updater

例 2 では 2 つのアセンブリ名が渡されています。そのうちの 1 つはパスが表示されています。例 2 では、A1.dll が、どのフォルダーに格納されている場合でも無視されます。また、A2.dll は、subfolder フォルダーに格納されている場合のみ、無視されます。

例 2
unity.exe -disable-assembly-updater A1.dll subfolder/A2.dll

あるアセンブリを -disable-assembly-updater コマンドラインのパラメーターとして渡すと (または、アセンブリを何も指定しない場合も)、Unity は以下のメッセージを Editor.log にログします。

[Assembly Updater] warning: Ignoring assembly [assembly_path] as requested by command line parameter.").

これを利用して、アセンブリをインポートするときの不要な API Updater のオーバーヘッドを避けます。

これは、Unity API にアクセスするアセンブリをインポートするときに、Unity API でアップデートする必要がないとわかっている場合に便利です。また、Unity API にまったくアクセスしないアセンブリをインポートする場合にも便利です (例えば、Unity の外部にあるゲームソースコードやその一部をビルドし、その結果のアセンブリを Unity プロジェクトにインポートする場合など)。

注意: アップデートが必要なアセンブリのアップデートを無効にすると、コンパイル時、実行時、または、その両方でエラーが発生する場合があり、追跡するのが困難です。
-accept-apiupdate Unity がバッチモードで起動されているときに APIUpdater の実行を指定するために、このコマンドラインオプションを使用します。

例:

unity.exe -accept-apiupdate -batchmode [other params]

Unity をバッチモードで起動するときにこのコマンドライン引数を省略すると、APIUpdater が実行されず、コンパイラーエラーが発生する原因になることがあります。2017.2 より前のバージョンでは、Unity をバッチモードで起動したときに APIUpdater の実行を避ける方法はありません。

C

using UnityEditor;
class MyEditorScript
{
     static void PerformBuild ()
     {
         string[] scenes = { "Assets/MyScene.unity" };
         BuildPipeline.BuildPlayer(scenes, ...);
     }
}

以下のコマンドは Unity をバッチモードで実行し、MyEditorScript.PerformBuild メソッドを実行し、その後、完了時に終了します。

Windows

C:\program files\Unity\Editor\Unity.exe -quit -batchmode -executeMethod MyEditorScript.PerformBuild

Mac OS

/Applications/Unity/Unity.app/Contents/MacOS/Unity -quit -batchmode -executeMethod MyEditorScript.PerformBuild

Unity をバッチモードで実行します。指定したプロジェクトのパスを使用してアセットサーバーから更新します。メソッドは、アセットサーバーから全てのアセットのダウンロードとインポートが終了した後に実行されます。メソッド実行が完了した後、Unity を自動的に終了します。

/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -projectPath ~/UnityProjects/AutobuildProject -assetServerUpdate 192.168.1.1 MyGame AutobuildUser l33tpa33 -executeMethod MyEditorScript.PerformBuild -quit

Unity エディターの特別なコマンドライン引数

これらの引数は、特殊な環境下または Unity サポートから指示されたときのみ使用してください。

オプション 説明
-enableIncompatibleAssetDowngrade Unity のより新しい互換性がないバージョンで作成したアセットがあり、現在使用している Unity のバージョンに合わせてダウングレードしたい場合に使用します。これを有効にすると、ダウングレードを必要とするプロジェクトを開こうとするとき、ダウングレードの確認を求めるダイアログボックスを表示します。
注意: この手順はサポートされていないためリスクが高く、最後の手段としてのみ使ってください。

Unity スタンドアロンプレイヤーのコマンドライン引数

Unityでビルドしたスタンドアロンプレイヤーはコマンドライン引数を読み取ることができます。

オプション 説明
-adapter N (Windows のみ) 別のディスプレイでフルスクリーン実行することを許容し、ここで N はディスプレイ番号を指します。多くの場合アダプターとビデオカードは 1:1 の関係です。マルチヘッド対応のカードの場合(ひとつのカードから複数モニターを操作)、各々の “ヘッド” はアダプター自身の場合があります。
-batchmode ゲームを「ヘッドレス」モードで実行します。ゲームは何も表示しないか、または、ユーザー入力を受けつけません。これはネットに接続したワークゲーム のサーバーを実行するのに最もよく使用します。
-force-d3d11(Windowsのみ) 強制的にレンダリングでDirect3D 11を使用します。
-force-d3d11-singlethreaded D3D11_CREATE_DEVICE_SINGLETHREADEDフラグで、DirectX 11.0 を強制的に作成します。
-force-device-index GPU のインデックスを渡すことによって、スタンドアロンプレイヤーに特定の GPU デバイスを使用させます (macOS のみ)。
-force-gfx-metal GPU のインデックスを渡すことによって、スタンドアロンプレイヤーに Metal を使用させます (macOS のみ)。
-force-glcore レンダリングに OpenGL コアプロファイルを使用するよう、エディターに強制します。 エディターは、もっとも適切な利用可能な OpenGL バージョン、および、OpenGL ドライバーによってアクセス可能なすべての OpenGL 拡張機能の使用を試みます。プラットフォームがサポートされていない場合、Direct3D が使用されます。
-force-glcoreXY -force-glcore と同じですが、OpenGL のバージョンを指定することができます。XYに指定できる値は、「32、33、40、41、42、43、44、54」です。
-force-clamped -force-glcoreXY と一緒に使用することにより、加えられた OpenGL 拡張をチェックするのを避け、同じコードパスのプラットフォーム間で実行可能になります。
-force-low-power-device スタンドアロンプレイヤーに、低消費電力のデバイスを使用させます (macOS のみ)。
-force-wayland Linux プレイヤーを実行するときに、実験的な Wayland サポートをアクティベートします。
-nographics バッチモードを実行する時、グラフィックスデバイスの初期化をまったく行わないようにします。これによって、GPU のないマシンで自動化されたワークフローを実行出来るようになります。
-nolog(LinuxとWindowsのみ) ログを出力しません。通常は、output_log.txt はゲームの実行ファイルの隣の *_Data フォルダーに書き込まれ、Debug.Log 出力が表示されます。
-popupwindow ウィンドウは、フレームなしのポップアップウィンドウとして作成されます。
-screen-fullscreen デフォルトのフルスクリーン状態をオーバーライドします。値は 0 か 1 のいずれかです。
-screen-height デフォルトの画面の高さをオーバーライドします。サポートされている解像度の整数である必要があります。
-screen-width デフォルトの画面の幅をオーバーライドします。サポートされている解像度の整数である必要があります。
-screen-quality デフォルトの画面の品質をオーバーライドします。使用例としては: /path/to/myGame -screen-quality Beautiful
-show-screen-selector 強制的に画面選択のダイアログボックスを表示させます。
-single-instance(LinuxとWindowsのみ) 同時に実行できるゲームのインスタンスを 1 つのみにします。他のインスタンスがすでに実行されている場合に、 -single-instance を使用して再度起動すると、既存のものにフォーカスします。
-parentHWND <HWND> delayed(Windowsのみ) Windows スタンドアロンアプリケーションを別のアプリケーションに埋め込みます。これを使用する場合は、親アプリケーションのウィンドウハンドル (HWND) を Windows スタンドアロンアプリケーションに渡す必要があります。

-parentHWND &lt;HWND&gt; delayed を渡すと、Unity アプリケーションは実行中に非表示になります。また、アプリケーション内の Unity のために [Microsoft Developer ライブラリ] (https://msdn.microsoft.com/en-us/library/windows/) から [SetParent](https://msdn.microsoft.com/ja-jp/library/cc411061.aspx) を呼び出す必要があります。Microsoft の SetParent は、Unity のウィンドウを埋め込みます。Unity のプロセスを作成するとき、Unity のウィンドウは Microsoft の [STARTUPINFO](https://msdn.microsoft.com/en-us/library/windows/desktop/ms686331(v=vs.85).aspx) 構造の一部として与えられる位置とサイズに従って作られます。<br/><br/> Unity ウィンドウのサイズを変更するには、Microsoft のGetWindowLongPtr` 関数のGWLP_USERDATA を確認します。グラフィックスが初期化されサイズ変更が安全になると、その最低ビット数は 1 に設定されます。Unity スプラッシュ画面の表示が終了すると、2 番目に低いビット数が 1 に設定されます。
詳細は、 EmbeddedWindow.zip の例を参照してください。

ユニバーサル Windows プラットフォーム コマンドライン引数

ユニバーサル Windows アプリは、デフォルトではコマンドライン引数を受け付けません。そのため、引数を渡すには、MainPage.xaml.cs/cppMainPage.cs/cpp から、例えば以下のような特別な関数を呼び出す必要があります。

appCallbacks.AddCommandLineArg("-nolog");

この関数を appCallbacks.Initialize() 関数の前に呼び出します。

オプション 説明
-nolog UnityPlayer.log を生成しません。
-force-driver-type-warp DirectX 11.0 WARP を強制します (詳細については Microsoft の文書 Windows Advanced Rasterization Platform を参照してください)。
-force-d3d11-no-singlethreaded DirectX 11.0 を D3D11_CREATE_DEVICE_SINGLETHREADED フラグなしで作成するように強制します。
-force-gfx-direct シングルスレッドレンダリングを強制します。
-force-feature-level-9-3 DirectX 11.0 機能レベル 9.3 を強制します。
-force-feature-level-10-0 DirectX 11.0 機能レベル 10.0 を強制します。
-force-feature-level-10-1 DirectX 11.0 機能レベル 10.1 を強制します。
-force-feature-level-11-0 DirectX 11.0 機能レベル 11.0 を強制します。

  • 2018–09–07 限られた 編集レビュー で修正されたページ

  • “accept-apiupdate” コマンドラインオプションは Unity 2017.2 で追加NewIn20172

  • “accept-apiupdate” コマンドライン引数は Unity 2017.3 で追加NewIn20172

  • Tizen サポートは2017.3 で打ち切りNewIn20173

  • “noUpm”、 “setDefaultPlatformTextureFormat”、 “CacheServerIPAddress” コマンドラインオプションは Unity 2018.1 で追加 NewIn20181

  • “Application.isBatchMode” 演算子は2018.2 で追加 NewIn20182

ビルドプレイヤーパイプライン
バッチモードとビルトインコルーチンの互換性