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

コマンドライン引数

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

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

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

On Windows, type the following into the Command Prompt to launch Unity:

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

同様の方法で、スタンドアロンの 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'

Note: When activating via the command line using continuous integration (CI) tools like Jenkins, add the -nographics flag to prevent a WindowServer error.

On Windows, type the following into the Command Prompt to silently launch Unity:

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

オプション

上で述べた通り、エディターやビルドされた Unity のゲームについてもスタートアップ時にコマンドライン引数付き実行することができます。このセクションでは、利用可能なオプションを説明します。

コマンド 説明
-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 をビルド (e.g. -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 をビルド (e.g. -buildOSXUniversalPlayer path/to/your/build.app).
-buildTarget <name> Allows the selection of an active build target before a project is loaded. Possible options are:
standalone, Win, Win64, OSXUniversal, Linux, Linux64, LinuxUniversal, iOS, Android, Web, WebStreamed, WebGL, XboxOne, PS4, PSP2, WindowsStoreApps, Switch, WiiU, N3DS, tvOS, PSM.
-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)。
-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-d3d11 (Windows only) レンダリングで Direct3D 11 を使用します。通常、グラフィックス API はプレイヤー設定での値に依存します(デフォルトは D3D11 です)。
-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 ライセンスがあるかのようにエディターを動作させます。
-importPackage <pathname> 特定のパッケージをインポート。インポートダイアログは表示されません。
-logFile <pathname> エディターまたは Windows/Linux/OSX スタンドアロンのログファイルが書き込みされる場所を指定。
-nographics When running in batch mode, do not initialize the graphics device at all. This makes it possible to run your automated workflows on machines that don’t even have a GPU (automated workflows only work when you have a window in focus, otherwise you can’t send simulated input commands). Please note that -nographics does not allow you to bake GI, since Enlighten requires GPU acceleration.
-password <password> 起動時に必要なユーザーパスワード。
-projectPath <pathname> 開く Unity プロジェクトのパス
-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 エディターのアクティベーションを行ない、ログインするためのユーザー名を入力します。
-password <password> 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 Use this command line option to specify that APIUpdater should run when Unity is launched in batch mode.

Example:

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

Omitting this command line argument when launching Unity in batch mode results in APIUpdater not running which can lead to compiler errors. Note that in versions prior to 2017.2 there’s no way to not run APIUpdater when Unity is launched in batch mode.

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, ...);
}

The following command executes Unity in batch mode, executes the MyEditorScript.PerformBuild method, and then quits upon completion.

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

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

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

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

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

コマンド 説明
-adapter N (Windows のみ) 別のディスプレイでフルスクリーン実行することを許容し、ここで N はディスプレイ番号を指します。多くの場合アダプターとビデオカードは 1:1 の関係です。マルチヘッド対応のカードの場合(ひとつのカードから複数モニターを操作)、各々の “ヘッド” はアダプター自身の場合があります。
-batchmode ゲームを “headless” モードで実行します。ゲームは何も表示せず、ユーザー入力を受付ません。これはネットワークゲーム でのサーバー実行に最も便利です。
-force-d3d11 (Windows only) 強制的にレンダリングでDirect3D 11を使用します。
-force-d3d11-no-singlethreaded DirectX 11.0 を D3D11_CREATE_DEVICE_SINGLETHREADED フラグなしで作成するように強制します。
-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-wayland Activate experimental Wayland support when running a Linux player.
-nographics バッチモードで実行している場合、すべてのグラフィックデバイスの初期化を行いません。これによってGPUを持っていないマシンで自動化されたワークフローを実行することが可能になります。
-nolog (Linux と Windows のみ) ログを出力しない。通常は output_log.txt がゲーム実行可能ファイルと同じフォルダー、すなわちDebug.Log が出力される *_Data フォルダーに書き込まれます。
-popupwindow ウインドウは(フレームなしの)ポップアップウインドウとして作成されます。
-screen-fullscreen デフォルトのフルスクリーン状態をオーバーライドします。値は 0 か 1 となります。(0 = false、1 = true)
-screen-height デフォルトのスクリーン高さをオーバーライドします。サポートされている解像度の整数である必要があります。
-screen-width デフォルトのスクリーン幅をオーバーライドします。サポートされている解像度の整数である必要があります。
-screen-quality デフォルトのスクリーン品質をオーバーライドします。使用例としては: /path/to/myGame -screen-quality Beautiful
-show-screen-selector 強制的に screen selector のダイアログボックスを表示させます。
-single-instance (Linux と Windows のみ) 同時に実行できるゲームのインスタンスは1つのみとします。もし他のインスタンスがすでに実行されている場合に、 -single-instance を使用して再度起動すると、既存のものにフォーカスします。
-parentHWND <HWND> delayed (Windows のみ) Embed the Windows Standalone application into another application. When using this, you need to pass the parent application’s window handle (‘HWND’) to the Windows Standalone application.

When passing -parentHWND 'HWND' delayed, the Unity application is hidden while it is running. You must also call SetParent from the Microsoft Developer library for Unity in the application. Microsoft’s SetParent embeds the Unity window. When it creates Unity processes, the Unity window respects the position and size provided as part of the Microsoft’s STARTUPINFO structure.

To resize the Unity window, check its GWLP_USERDATA in Microsoft’s GetWindowLongPtr function. Its lowest bit is set to 1 when graphics have been initialized and it’s safe to resize. Its second lowest bit is set to 1 after the Unity splash screen has finished displaying.
For more information, see this example: 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 を強制します。

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

  • “accept-apiupdate” command line option added in Unity 2017.2 NewIn20172

  • “-force-clamped” command line argument added in Unity 2017.3 NewIn20172

  • Tizen support discontinued in 2017.3 NewIn20173

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