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

Command line arguments

通常、デスクトップのアイコンをダブルクリックして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 をビルド (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: win32, win64, osx, linux, linux64, ios, android, web, webstreamed, webgl, xboxone, 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 only) レンダリングで 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> 開く 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 エディターのアクティベーション中にログインするためのユーザー名
-disable-assembly-updater <assembly1 assembly2> Specify a space-separated list of assembly names as parameters for Unity to ignore on automatic updates.
The space-separated list of assembly names is optional: Pass the command line options without any assembly names to ignore all assemblies, as in example 1.

Example 1
unity.exe -disable-assembly-updater

Example 2 has two assembly names, one with a pathname. Example 2 ignores A1.dll, no matter what folder it is stored in, and ignores A2.dll only if it is stored under subfolder folder:

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

If you list an assembly in the -disable-assembly-updater command line parameter (or if you don’t specify assemblies), Unity logs the following message to Editor.log:

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

Use this to avoid unnecessary API Updater overheads when importing assemblies.

It is useful for importing assemblies which access a Unity API when you know the Unity API doesn’t need updating. It is also useful when importing assemblies which do not access Unity APIs at all (for example, if you have built your game source code, or some of it, outside of Unity, and you want to import the resulting assemblies into your Unity project).

Note: If you disable the update of any assembly that does need updating, you may get errors at compile time, run time, or both, that are hard to track.

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 スタンドアロンプレイヤーのコマンドライン引数

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 only) 強制的にレンダリングで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 のみ) Force the Editor to use OpenGL core profile for rendering. The Editor tries to use the best OpenGL version available, and all OpenGL extensions exposed by the OpenGL drivers. If the platform isn’t supported, Direct3D is used.
-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 がゲーム実行可能ファイルの隣、すなわち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 only) 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 ストアアプリはデフォルトでコマンドライン引数を受付しないため、渡すためには 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–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 を強制
ビルドプレイヤーパイプライン
アセットの内部処理