ビルドプレイヤーパイプライン
アセットの内部処理

コマンドライン引数

通常、デスクトップのアイコンをダブルクリックしてUnityを立ち上げますが、コマンドライン( macOS のターミナルや Windows のコマンドプロンプト)から実行することも可能です。コマンドラインから実行する場合、Unity はスタートアップ時にコマンドや情報を受け取る事ができるので、通しテストや自動ビルド、その他の開発タスクを行う時にとても便利です。

macOS で Unity を起動するには、以下を Terminal に入力します。

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

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

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

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

C:\Program Files (x86)\Unity\Editor\Unity.exe

同様の方法で、スタンドアロンの Unity ゲームを起動します。

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

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

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

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

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

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

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

オプション

上で述べた通り、エディターやビルドするゲームについてもスタートアップ時に追加のコマンドと情報として追加えられます。このセクションでは、可能なコマンドラインオプションを説明します。

| オプション | 説明 | |:—|:—| |-assetServerUpdate <IP[:port] projectName username password [r <revision>]>|強制的に IP:port で指定された アセットサーバー のプロジェクトの更新を行ないます。ポート情報は任意であり、ない場合は標準のポート (10733) を使用します。このコマンドは -projectPath 引数と組み合わせて正しいプロジェクトで作業していることを確認したうえで使用してください。もしプロジェクト名がない場合、Unity で最後に開かれたプロジェクトが使用されます。もし -projectPath にプロジェクトが存在しない場合、自動的に新しいプロジェクトが作成されます。| |-batchmode|バッチモードで Unity を実行。これは常に他のコマンドライン引数との組み合わせで使用すべきです。なぜなら、ポップアップウインドウが表示されないため自動で行われるからです。もし例外エラーがスクリプトコード実行時に発生するか、アセットサーバーの更新が失敗するか、またはその他の処理が失敗した場合、Unity は直ちに戻り値 1 で終了します。
バッチモードでは Unity は最小限のログ出力しかコンソールに送信しないことに注意してください。ただし ログファイル には完全なログ情報が含まれます。エディターがプロジェクトを開いているときに同じプロジェクトをバッチモードで開くことはサポートされていないことに注意してください。Unity のインスタンスは同時にひとつしか実行することが出来ません。| |-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>|プロジェクトを読み込む前に、ビルドターゲットを選択できます。選択可能なオプション: win32、win64、osx、linux、linux64、ios、android、web、webstreamed、webgl、xbox360、xboxone、ps3、ps4、psp2、wsaplayer、tizen、samsungtv。 | |-buildWindowsPlayer <pathname>|32bit スタンドアロン Windows プレイヤーをビルドします (例えば、-buildWindowsPlayer path/to/your/build.exe )。| |-buildWindows64Player <pathname>|64bit スタンドアロン Windows player をビルドします (例えば、-buildWindows64Player path/to/your/build.exe )。| |-cleanedLogFile|詳細なデバッグ機能。StackTraceLogging には詳細なログを可能にする機能があります。すべての設定で NoneScript OnlyFull が選択可能。| |-createProject <pathname>|特定のパスに空のプロジェクトを作成| |-editorTestsCategories|エディターをカテゴリーでフィルタリングします。テストカテゴリーはカンマで区切ること。| |-editorTestsFilter|エディターを名前でフィルタリングします。テスト名はカンマで区切ってください。| |-editorTestsResultFile|結果ファイルが置かれるパス。パスがフォルダーの場合は、デフォルトファイル名が使用されます。指定されていない場合は、結果はプロジェクトの root フォルダーに置かれます。| |-executeMethod <ClassName.MethodName>|この static メソッドは Unity のスタート直後に実行されます。すなわちプロジェクトが開かれ、必要であれば、アセットサーバーの更新が行われた後です。これにより継続的インテグレーション、ユニットテストの実施、ビルド作成、データ準備等々が使用できるようになります。コマンドライン処理のエラー結果がほしい場合は、例外を投げて Unity を戻り値 1 で終了させるか、ゼロ以外の戻り値を返すコード EditorApplication.Exit をコールします。引数を渡したい場合は、コマンドラインに追加し System.Environment.GetCommandLineArgs を使用して関数から取得します。-executeMethod を使用する場合、呼び出すスクリプトのメソッドは Editor フォルダー内になければいけません。実行するメソッドは static である必要があります。| |-exportPackage <exportAssetPath1 exportAssetPath2 ExportAssetPath3 exportFileName>|指定したパス(または複数の指定したパス)にエクスポート。 exportAssetPath は Unity プロジェクトからエクスポートするフォルダー(Unity プロジェクトのルートディレクトリに対する相対パス)であり、 exportFileName はパッケージの名前です。現在、このオプションはフォルダー全体の単位でしかエクスポート出来ません。通常このコマンドは -projectPath 引数を使って使用する必要があります。| |-force-d3d9 (Windows only)| レンダリングで Direct3D 9 を使用します。通常、グラフィックス API はプレイヤー設定での値に依存します(デフォルトは D3D11 です)。 | |-force-d3d11 (Windows のみ)| レンダリングで Direct3D 11 を使用します。通常、グラフィックス API はプレイヤー設定での値に依存します (デフォルトは D3D11 です)。 | |-force-glcore (Windows のみ)| レンダリングに OpenGL 3/4 コアプロファイルを使用します。エディターは、利用可能でベストな OpenGL バージョンと、OpenGL ドライバがアクセスできるすべての OpenGL 拡張の利用を試みます。そのプラットフォームがサポートされていない場合は、Direct3D を使用します。 | |-force-glcoreXY (Windows のみ)| -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 (Windows のみ)| -force-glcoreXY と一緒に使用することにより、追加された OpenGL 拡張の確認を避けることができます。これにより、同じコードパスで複数のプラットフォーム間で実行できます。 | |-force-free| Unity Pro ライセンスがインストールされていても、マシン上に無料 Unity ライセンスがあるかのようにエディターを動作させます。| |-importPackage <pathname>|特定の パッケージ をインポートします。インポートダイアログは表示されません。| |-logFile <pathname>|エディターまたは Windows/Linux/OSX スタンドアロンのログファイルが書き込みされる場所を指定。| |-nographics|バッチモードを実行する時、グラフィックスデバイスの初期化を行わないようにします。このパラメーターによって、GPU のないマシンで自動化されたワークフローを実行出来るようになります(自動化されたワークフローは、ウインドウにフォーカスがあるときのみ機能し、そうでない場合はシミュレートされた入力コマンドは送信出来ません)。Enlighten は GPU アクセラレーション が必須なため、OSX 上で -nographics コマンドを使用した GI のベイクは行えません。| |-password <password>|起動時に必要なユーザーパスワード。| |-projectPath <pathname>|指定したパスのプロジェクトを開きます。| |-quit|コマンドの実行が終了した後に Unity エディターを終了します。これによりエラーメッセージが表示されなくなる場合があることに注意してください (ただし、エラーメッセージは Editor.log ファイルには保存されます)。| |-returnlicense|現在有効なライセンスをライセンスサーバーに返します。Unity がライセンスサーバーと通信する必要があるため、ライセンスファイルが削除されるまで数秒かかります。| |-runEditorTests|プロジェクトのエディターテストを実行します。これには projectPath を必要とし、 batchmode 引数と一緒に実行するとより効果的です。終了するとエディターは自動的に閉じるので quit は必要ありません。| |-serial <serial>|指定されたシリアルキーで Unity の認証を行います。これを Unity の自動アクティベーションとして使用する場合は、実行後 Unity を終了するために -batchmode と一緒に -quit 引数も渡すようにしてください。また、Unity がライセンスサーバーと通信する必要があるため、ライセンスファイルを作成するまでに数秒かかるかもしれません。この引数で Unity を実行する前に、ライセンスファイルのフォルダーが存在し、フォルダーに適切な許可があることを確認してください。アクティベーションに失敗した場合は Editor.log ファイルで情報を確認できます。| |-silent-crashes|クラッシュダイアログを表示しません。| |-username <username>|Unity エディターのアクティベーションのときに、ログインフォームにユーザー名を入力します。|

C

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

JavaScript

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

Unity をバッチモードで実行し、MyEditorScript.MyMethod メソッドを実行し、完了時に終了します。

Windows:

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

Mac OS:

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

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 エディターの特別なコマンドライン引数

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

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

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

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

オプション 説明
-adapter N (Windows のみ) 別のディスプレイでフルスクリーン実行することを許容し、ここで N はディスプレイ番号を指します。多くの場合アダプターとビデオカードは 1:1 の関係です。マルチヘッド対応のカードの場合(ひとつのカードから複数モニターを操作)、各々の “ヘッド” はアダプター自身の場合があります。
-batchmode ゲームを “headless” モードで実行します。ゲームは何も表示せず、ユーザー入力を受付ません。これはネットワークゲーム でのサーバー実行に最も便利です。
-force-d3d9 (Windows only) レンダリングで Direct3D 9 を使用します。通常、グラフィックス API はプレイヤー設定での値に依存します(デフォルトは D3D11 です)。
-force-d3d9-ref (Windows のみ) 強制的にDirect3Dの “Reference” ソフトウェアレンダラーで実行します。正しく動作するためには DirectX SDK がインストールされている必要があります。自動的なテストスイートで、グラフィックスカードにどれが使用されていてもレンダリングが同一であるようにする場合、たいてい役立ちます。
-force-d3d11 (Windows のみ) 強制的にレンダリングでDirect3D 11を使用します。
-force-d3d11-no-singlethreaded DirectX 11.0 を D3D11_CREATE_DEVICE_SINGLETHREADED フラグなしで作成するように強制します。
-force-opengl (Windows のみ) Direct3Dが利用可能であったとしても強制的にレンダリングでOpenGLを使用するようにします。通常Direct3Dが使用されますが、Direct3D 9.0cが利用可能でない場合OpenGLが使用されます。
-force-glcore (Windows のみ) 強制的にエディターがレンダリングに OpenGL コアプロファイルを使用するようにします。エディターは、利用可能でベストな OpenGL バージョンと、OpenGL ドライバからアクセス可能なすべての OpenGL 拡張を利用しようとします。プラットフォームがサポートされていない場合は、Direct3D が使用されます。
-force-glcoreXY (Windows のみ) -force-glcore と同じですが、OpenGL のバージョンを指定することができます。XYに指定できる値は、「32、33、40、41、42、43、44、54」です。
-force-clamped (Windows のみ) -force-glcoreXY と一緒に使用することにより、追加された OpenGL 拡張をチェックするのを避け、同じコードパスのプラットフォーム間で実行可能になります。
-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 only) Windows スタンドアロンアプリケーションを他のアプリケーションに埋め込みます。これを使用すると、親アプリケーションのウィンドウハンドルを Windows のスタンドアロンアプリケーションに渡す必要があります。
-parentHWND delayed を渡すと、実行中は Unity アプリケーションは非表示になります。また、アプリケーションで Unity 用に SetParent を呼び出す必要があります。これにより、Unity ウィンドウが埋め込まれます。
詳しい情報は、EmbeddedWindow.zip を参照してください。

Windows ストアのコマンドライン引数

Windows ストアアプリはデフォルトでコマンドライン引数を受付しないため、渡すためには App.xaml.cs/cpp または App.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–1 DirectX 11.0 機能レベル 9.1 を強制
-force-feature-level–9–2 DirectX 11.0 機能レベル 9.2 を強制
-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 を強制
ビルドプレイヤーパイプライン
アセットの内部処理