Version: 2020.2
言語: 日本語
セーフモード
バッチモードとビルトインコルーチンの互換性

コマンドライン引数

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

Unity の起動

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

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

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

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

When you launch Unity like this, it receives commands and information on startup, which can be very useful for test suites, automated builds and other production tasks. Note: Use the same method to launch standalone Unity applications.

サイレントモードで 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: If you use continuous integration (CI) tools like Jenkins to activate via the command line, add the -nographics flag to prevent a WindowServer error.

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

"C:\Program Files\Unity\Editor\Unity.exe" -batchmode -username name@example.edu.uk - password XXXXXXXXXXXXX -serial E3-XXXX-XXXX-XXXX-XXXX-XXXX –quit

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

On macOS, type the following into the Terminal to return the license:

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

Windows:

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

Returning the license is useful when you no longer want to use Unity on the machine, and want to use the same license on another machine.

Create a license activation file and import license file by command

On macOS, type the following into the Terminal:

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

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

On Windows, type the following into the Command Prompt:

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

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

For more details, read the Manual Activation Guide.

オプション

起動時に追加のコマンドと情報を使って、エディターを起動し、Unity アプリケーションをビルドできます。このセクションは、使用可能なコマンドオプションについて説明します。

オプション 説明
-accept-apiupdate Unity がバッチモードで起動されているときに APIUpdater の実行を指定するために、このコマンドラインオプションを使用します。

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

Unity をバッチモードで起動するときにこのコマンドライン引数を省略すると、APIUpdater が実行されず、コンパイラーエラーが発生する原因になることがあります。
-batchmode バッチモードで Unity を実行します。バッチモードでは、Unity では人間の介入を必要とせずにコマンドライン引数を実行します。また、人間の操作を必要とするポップアップウィンドウ (“シーンの保存” ウィンドウなど) も抑制します。ただし、Unity エディター自体は通常どおり開きます。コマンドライン引数を使用する場合は、自動化を中断することなく実行できるため、Unity は常にバッチモードで実行する必要があります。

スクリプトコードの実行中に例外が発生した場合、アセットサーバーの更新が失敗した場合、またはその他の操作が失敗した場合、Unity はすぐにコード 1 を返して終了します。

バッチモードでは、最小バージョンのログ出力をコンソールに送信することに注意してください。ただし、ログファイル には完全なログ情報が含まれています。エディターで同じプロジェクトが開いている間は、プロジェクトをバッチモードで開くことはできません。Unity のインスタンス 1 つのみを一度に実行できます。

エディターまたはスタンドアロンプレイヤーがバッチモードで実行されているかどうかを確認するには、Application.isBatchMode 演算子を使用します。

-batchmode を使用するときにプロジェクトがまだインポートされていない場合は、デフォルトのターゲットプラットフォームが使用されます。別のプラットフォームを強制的に使うには、-buildTarget オプションを使用します。
-buildLinux64Player <pathname> 64-bit スタンドアロン Linux player をビルドします (例えば、-buildLinux64Player path/to/your/build)。
-buildOSXUniversalPlayer <pathname> 64-bit スタンドアロン Mac OS X player をビルドします (例えば、-buildOSXUniversalPlayer path/to/your/build.app)
-buildTarget <name> プロジェクトをロードする前に、アクティブなビルドターゲットを選択します。可能なオプションは以下の通りです。
スタンドアロン、Win、Win64、OSXUniversal、Linux64、iOS、Android、WebGL、XboxOne、PS4、WindowsStoreApps、Switch、tvOS
-buildWindowsPlayer <pathname> 32bit スタンドアロン Windows プレイヤーをビルドします (例えば、-buildWindowsPlayer path/to/your/build.exe )。
-buildWindows64Player <pathname> 64bit スタンドアロン Windows player をビルドします (例えば、-buildWindows64Player path/to/your/build.exe )。
-createProject <pathname> 特定のパスに空のプロジェクトを作成
-debugCodeOptimization デバッグコード最適化モードを有効にし、セッションの現在のデフォルトコード最適化モードをオーバーライドします。
-deepprofiling CPU プロファイラー の Deep Profiling (詳細プロファイリング) オプションを有効にします。
-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
unity.exe -disable-assembly-updater A1.dll subfolder/A2.dll

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:

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 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.
-disableManagedDebugger デバッガーのリッスンソケットを無効にします。
-diag-debug-shader-compiler Unity は、シェーダーコンパイラーのインスタンスを 1 つだけ起動し、そのタイムアウトを強制的に 1 時間にします。シェーダーコンパイラーの問題をデバッグするのに便利です。
-enableCodeCoverage コードカバレッジを有効にし、Coverage API へのアクセスを可能にします。
-executeMethod <ClassName.MethodName> または -executeMethod <NamespaceName.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-d3d12 (Windows のみ) レンダリングで Direct3D 12 を使用します。通常、グラフィックス API は Player 設定 での値に依存します。
-force-device-index Metal を使用する場合に、GPU のインデックスを渡すことによって、エディターに特定の GPU デバイスを使用させます(macOS のみ)。
-force-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-vulkan レンダリングで Vulkan を使用します。通常、グラフィックス API は Player 設定 での値に依存します。
-force-clamped -force-glcoreXY と一緒に使用することにより、追加された OpenGL 拡張を Unity が確認することを避けることができます。これにより、同じコードパスで複数のプラットフォーム間で実行できます。
-force-free Unity Pro ライセンスがインストールされていても、マシン上に無料 Unity ライセンスがあるかのようにエディターを動作させます。
-force-low-power-device (macOS のみ) Metal を使用する場合に、低消費電力のデバイスを使用させます。
-importPackage <pathname> 特定の パッケージ をインポートします。インポートダイアログは表示されません。
-job-worker-count <N> Unity JobQueue Job Worker Count の最大スレッド数を指定します。また、それを Unity Standalone Player の boot.configjob-worker-count=<N> のように指定することもできます。
-logFile <pathname> Unity がエディターまたは Windows/Linux/OSX のスタンドアロンのログファイルを書き込む場所を指定します。コンソールに出力する場合は、パス名に - を指定します。Windowsでは、- オプションを指定すると、デフォルトではコンソールではなく stdout に出力されます。
-nographics When you run this in batch mode, it does not initialize the graphics device. You can then run automated workflows on machines that don’t have a GPU. Automated workflows only work when you have a window in focus, otherwise you can’t send simulated input commands. -nographics does not allow you to bake GI as Enlighten requires GPU acceleration.
-noUpm Unity Package Manager を無効にします。
-openfile <path> Open the project from a path to a scene or package file. Alternative is to use -projectPath argument.
-password <password> Unity エディターのアクティベーションのときに、ログインフォームにパスワードを入力します。
-profiler-enable プレイヤーやエディターの起動をプロファイリングします。プレイヤーでこの引数を使用すると、Build Settings で Autoconnect Profiler オプションを有効にしてプレイヤーをビルドするのと同じ効果があります。

エディターでこの引数を使用すると、エディターの起動時に Profiler ウィンドウでプロファイラー情報の収集と表示を開始します。
-profiler-log-file <Path/To/Log/File.raw> この引数は、プロファイルデータを .raw ファイルに送信するように Unity Profiler を設定します。プレイヤーとエディターの両方で使用できます。
-profiler-capture-frame-count <NumberOfFrames> この引数は、起動時に .raw ファイルに送信する場合に、プロファイラーがキャプチャするフレーム数を設定します。プレイヤーでのみ機能します。
-profiler-maxusedmemory デフォルトでは、 Unity Profiler の maxUsedMemory はプレイヤー用に 16MB、エディター用に 256MB です。この引数を使用して、起動時に maxUsedMemory パラメーターをカスタムサイズに設定できます (例えば、-profiler-maxusedmemory 16777216)。サイズはバイト単位で設定します。
-projectPath <pathname> Open the project at the given path. If pathname contains spaces, enclose it in quotes.
-quit Quit the Unity Editor after other commands have finished executing. This can cause error messages to be hidden (however, they still appear in the Editor.log file).
-releaseCodeOptimization リリースコード最適化モードを有効にし、セッションの現在のデフォルトコード最適化モードをオーバーライドします。
-returnlicense Return the currently active license to the license server. You should wait a few seconds before Unity removes the license file, because it needs to communicate with the license server.
-serial <serial> Activate Unity with the specified serial key. When you use this to automatically activate Unity, you must pass the -batchmode, and it is good practice to pass the -quit argument. You should wait a few seconds before Unity removes the license file, because it needs to communicate with the license server. Make sure that license file folder exists, and it has appropriate permissions before you run Unity with this argument. If activation fails, see the Editor.log for info.
-setDefaultPlatformTextureFormat (Android のみ) テクスチャをインポートしたり、プロジェクトをビルドしたりする前に、デフォルトのテクスチャ圧縮を希望の形式に設定します。これは、希望の形式で再度テクスチャをインポートする必要がないようにするためです。利用可能なフォーマットは、dxt、pvrtc、atc、etc、etc2、astc です。
-silent-crashes スタンドアロンプレーヤーがクラッシュしたときに表示されるダイアログを Unity が表示しないようにします。 この引数は、プレイヤーを自動化されたビルドやテストで実行したい場合に便利です (ダイアログによって自動化された手順が妨げられるのを防ぎます)。
-stackTraceLogType Allow detailed debugging. All settings allow None, Script Only and Full to be selected. (for example, -stackTraceLogType Full)
-testPlatform, -testResults, -runTests Run tests. See Unity Test Framework package documentation.
-username <username> Unity エディターのアクティベーションのときに、ログインフォームにユーザー名を入力します。
-vcsMode <mode> Set version control mode for this session. Available modes are "Visible Meta Files", "Hidden Meta Files", Perforce, and PlasticSCM. Additional flags can be used to fill out the configuration fields for the given version control mode. These flags are based on the Provider.GetActiveConfigFields method. For example, you can use the -vcPerforceUsername, -vcPerforcePassword, -vcPerforceWorkspace and -vcPerforceServer to set the Perforce username, workspace and server fields.

Note: <mode> arguments that contain spaces must be wrapped in double quotes (").
-EnableCacheServer Tells Unity to enable usage of the newer Accelerator Cache Server. You must also use -cacheServerEndpoint to specify the address.
-cacheServerEndpoint より新しい Accelerator Cache Server を使用している場合は、エンドポイントのアドレスを指定します。

例:

-cacheServerEndpoint 127.0.0.1:10080。この設定は、Editor Preferences に保存されている設定をオーバーライドします。これを使うと、Unity の複数のインスタンスを異なる Cache Server に接続することができます。
-cacheServerNamespacePrefix より新しい Accelerator Cache Server の名前空間プレフィックスを設定します。Cache Server 上のデータをグループ化するために使用します。

例:

-cacheServerNamespacePrefix MyProject
-cacheServerEnableDownload より新しい Accelerator Cache Server からのダウンロードを有効にします。

例:

-cacheServerEnableDownload true
-cacheServerEnableUpload より新しい Accelerator Cache Server へのアップロードを有効にします。

例:

-cacheServerEnableUpload false
-CacheServerIPAddress <host:port> 古い (v1) Cache Server の使用を有効にし、起動時に接続する IP アドレスを指定します。 これにより、エディター設定に保存されている設定がオーバーライドされます。 これを使用すると、Unity の複数のインスタンスを異なる v1 Cache Server に接続できます。

プロジェクトの 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 -projectPath "C:\Users\UserName\Documents\MyProject" -executeMethod MyEditorScript.PerformBuild

Mac OS

/Applications/Unity/Unity.app/Contents/MacOS/Unity -quit -batchmode -projectPath ~/UnityProjects/MyProject -executeMethod MyEditorScript.PerformBuild

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

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

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

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

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

オプション 説明
-monitor N 指定されたモニター (1 ベースのインデックス番号で示されます) 上でスタンドアロンプレイヤーを実行します。
-batchmode ゲームを “ヘッドレス” モードで実行します。ゲームは何も表示しないか、または、ユーザー入力を受けつけません。これは オンラインゲーム のサーバーを実行するのに役立ちます。
-force-d3d11(Windows のみ) 強制的にレンダリングでDirect3D 11を使用します。
-force-d3d11-singlethreaded D3D11_CREATE_DEVICE_SINGLETHREADEDフラグで、DirectX 11.0 を強制的に作成します。
-force-d3d12 (Windows のみ) 強制的にレンダリングで Direct3D 12 を使用します。
-force-device-index GPU のインデックスを渡すことによって、スタンドアロンプレイヤーに特定の GPU デバイスを使用させます。このオプションは D3D11、D3D12、Metal、Vulkan のグラフィックス API によってサポートされますが、OpenGL ではサポートされません。
-force-metal (macOS のみ) スタンドアロンプレイヤーにデフォルトのグラフィックス API として Metal を使用させます。
-force-glcore レンダリングに OpenGL コアプロファイルを使用するよう、ゲームに強制します。 エディターは、もっとも適切な利用可能な OpenGL バージョン、および、OpenGL ドライバーによってアクセス可能なすべての OpenGL 拡張機能の使用を試みます。プラットフォームがサポートされていない場合、Direct3D が使用されます。
-force-glcoreXY -force-glcore と同じですが、OpenGL のバージョンを指定することができます。XYに指定できる値は、「32、33、40、41、42、43、44、54」です。
-force-vulkan レンダリングで Vulkan を使用することを強制します。
-force-clamped -force-glcoreXY と一緒に使用することにより、追加された OpenGL 拡張の確認を避けることができます。これにより、同じコードパスで複数のプラットフォーム間で実行できます。
-force-low-power-device (macOS のみ) スタンドアロンプレイヤーに、低消費電力のデバイスを使用させます。
-force-wayland Linux プレイヤーを実行するときに、実験的な Wayland サポートをアクティベートします。
-nographics バッチモードを実行する時、グラフィックスデバイスの初期化を行わないようにします。これによって、GPU のないマシンで自動化されたワークフローを実行出来るようになります。
-nolog 出力ログを作成しません。通常、Unity は output_log.txtLog Files フォルダーに書き込み、そこに Debug.Log が出力されます。
-no-stereo-rendering ステレオレンダリングをオフにします。
-parentHWND <HWND> delayed(Windows のみ) Windows スタンドアロンアプリケーションを別のアプリケーションに埋め込みます。これを使用する場合は、親アプリケーションのウィンドウハンドル (HWND) を Windows スタンドアロンアプリケーションに渡す必要があります。

-parentHWND 'HWND' delayed を渡すと、Unity アプリケーションは実行中に非表示になります。また、アプリケーション内の Unity のために Microsoft Developer ライブラリ から SetParent を呼び出す必要があります。Microsoft の SetParent は、Unity のウィンドウを埋め込みます。Unity のプロセスを作成するとき、Unity のウィンドウは Microsoft の STARTUPINFO 構造の一部として与えられる位置とサイズに従って作られます。

Unity ウィンドウのサイズを変更するには、Microsoft の GetWindowLongPtr 関数のGWLP_USERDATA を確認します。グラフィックスが初期化されサイズ変更が安全になると、その最低ビット数は 1 に設定されます。Unity スプラッシュ画面の表示が終了すると、2 番目に低いビット数が 1 に設定されます。
詳細は、 EmbeddedWindow.zip の例を参照してください。
-popupwindow フレームのないポップアップウィンドウとしてウィンドウを作成します。このコマンドは macOS ではサポートされていません。
-screen-fullscreen デフォルトのフルスクリーン状態をオーバーライドします。値は 0 か 1 のいずれかです。
-screen-height デフォルトの画面の高さをオーバーライドします。サポートされている解像度の整数である必要があります。
-screen-width デフォルトの画面の幅をオーバーライドします。サポートされている解像度の整数である必要があります。
-screen-quality デフォルトの画面の品質をオーバーライドします。使用例としては: /path/to/myGame -screen-quality Beautiful。サポートされるオプションは、 Quality 設定 名と一致します。
-single-instance (Linux と Windows のみ) 同時に実行できるアプリケーションのインスタンスを 1 つのみにします。他のインスタンスがすでに実行されている場合に、 -single-instance を使用して再度起動すると、既存のものにフォーカスします。
-vrmode <devicetype> 特定の VR 機器で起動します。詳しくは、Unity での VR 開発入門 を参照してください。
-window-mode (Windows のみ) フルスクリーンのウィンドウモードをオーバーライドします。受け入れられる値は、exclusive または borderless です。詳細については、スタンドアロンプレイヤー設定 を参照してください。

ユニバーサル 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-singlethreaded D3D11_CREATE_DEVICE_SINGLETHREADEDフラグで、DirectX 11.0 を強制的に作成します。
-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 を強制します。

  • 2019–04–18 修正されたページ

  • “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

セーフモード
バッチモードとビルトインコルーチンの互換性