ビルドプレイヤーパイプライン
Batch mode and built-in coroutine compatibility

コマンドライン引数

You can run Unity from the command line (from the macOS Terminal or the Windows Command Prompt).

On macOS, type the following into the Terminal to launch 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

When you launch it like this, Unity 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 games.

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

On macOS, type the following into the Terminal to silently launch 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 フラグを加えてください。

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"

Returning the license to the license server

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

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

On Windows, type the following into the Command Prompt to return the license:

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

Create 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

Check Manual Activation Guide for more details.

オプション

You can run the Editor and built Unity games with additional commands and information on startup. This section describes the command line options available.

コマンド 説明
-assetServerUpdate <IP[:port] projectName username password [r <revision>]> Force an update of the project in the Asset Server given by IP:port. The port is optional, and if not given it is assumed to be the standard one (10733). It is advisable to use this command in conjunction with the -projectPath argument to ensure you are working with the correct project. If you don’t give a project name, then the command line uses the last project opened by Unity. If no project exists at the path -projectPath gives, then the command line creates one automatically.
-batchmode Run Unity in batch mode. You should always use this in conjunction with the other command line arguments, because it ensures no pop-up windows appear and eliminates the need for any human intervention. When an exception occurs during execution of the script code, the Asset server updates fail, or other operations fail, Unity immediately exits with return code 1.
Note that in batch mode, Unity sends a minimal version of its log output to the console. However, the Log Files still contain the full log information. You cannot open a project in batch mode while the Editor has the same project open; only a single instance of Unity can run at a time.
Tip: To check whether you are running the Editor or Standalone Player in batch mode, use the Application.isBatchMode operator.
-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 loading a project. Possible options are:
standalone, Win, Win64, OSXUniversal, Linux, Linux64, LinuxUniversal, iOS, Android, Web, WebStreamed, WebGL, XboxOne, PS4, PSP2, WindowsStoreApps, Switch, 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 Detailed debugging feature. StackTraceLogging allows you to allow detailed logging. All settings allow None, Script Only and Full to be selected. (for example, -stackTraceLogType Full)
-CacheServerIPAddress <host:port> Connect to the specified Cache Server on startup, overriding any configuration stored in the Editor Preferences. Use this to connect multiple instances of Unity to different Cache Servers.
-createProject <pathname> 特定のパスに空のプロジェクトを作成
-editorTestsCategories エディターをカテゴリーでフィルタリングします。テストカテゴリーはカンマで区切ってください。
-editorTestsFilter エディターを名前でフィルタリングします。テスト名はカンマで区切ってください。
-editorTestsResultFile Path location to place the result file. If the path is a folder, the command line uses a default file name. If not specified, it places the results in the project’s root folder.
-executeMethod <ClassName.MethodName> Execute the static method as soon as Unity opens the project, and after the optional Asset server update is complete. You can use this to do tasks such as continous integration, performing Unit Tests, making builds or preparing data. To return an error from the command line process, either throw an exception which causes Unity to exit with return code 1, or call EditorApplication.Exit with a non-zero return code. To pass parameters, add them to the command line and retrieve them inside the function using System.Environment.GetCommandLineArgs. To use -executeMethod, you need to place the enclosing script in an Editor folder. The method you execute must be defined as static.
-exportPackage <exportAssetPath1 exportAssetPath2 ExportAssetPath3 exportFileName> Export a package, given a path (or set of given paths). In this example exportAssetPath is a folder (relative to to the Unity project root) to export from the Unity project, and exportFileName is the package name. Currently, this option only exports whole folders at a time. You normally need to use this command with the -projectPath argument.
-force-d3d11 (Windows only) レンダリングで Direct3D 11 を使用します。通常、グラフィックス API はプレイヤー設定での値に依存します(デフォルトは D3D11 です)。
-force-device-index When using Metal, make the Editor use a particular GPU device by passing it the index of that GPU (macOS only).
-force-gfx-metal Make the Editor use Metal as the default graphics API (macOS only).
-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 When using Metal, make the Editor use a low power device (macOS only).
-importPackage <pathname> 特定のパッケージをインポート。インポートダイアログは表示されません。
-logFile <pathname> Specify where the Editor or Windows/Linux/OSX standalone log file are written. If the path is ommitted, OSX and Linux will write output to the console. Windows uses the path %LOCALAPPDATA%\Unity\Editor\Editor.log as a default.
-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). Note that -nographics does not allow you to bake GI, because Enlighten requires GPU acceleration.
-noUpm Disables the Unity Package Manager.
-password <password> Enter a password into the log-in form during activation of the Unity Editor.
-projectPath <pathname> 開く Unity プロジェクトのパス
-quit コマンド実行後に Unity エディターを終了します。これによりエラーメッセージが隠される場合があることに注意してください (ただし、エラーメッセージは Editor.log ファイルには保存されます)。
-returnlicense 現在有効なライセンスをライセンスサーバーに返します。Unity がライセンスサーバーと通信する必要があるため、ライセンスファイルが削除されるまで数秒をかかります。
-runEditorTests エディターテストをプロジェクトから実行します。この引数は projectPath を必要とし、 batchmode 引数と一緒に実行できます。実行が終了するときエディターは自動的に閉じるので、 quit は必要ありません。
-serial <serial> 指定されたシリアルキーで Unity の認証を行います。もし Unity の自動認証として使用する場合、実行された後、Unity を終了するために -batchmode-quit 引数を同時に渡すようにしてください。また、Unity がライセンスサーバーと通信する必要があるため、ライセンスファイルを作成するまでに数秒かかるかもしれません。ライセンスファイル、フォルダーが存在し、この引数パラメーター付きで Unity を実行する前にフォルダーへのアクセス権が適切か確認してください。認証に失敗した場合は Editor.log ファイルで原因を把握してください。
-setDefaultPlatformTextureFormat Sets the default texture compression to the desired format before importing a texture or building the project. This is so you don’t have to import the texture again with the format you want. The available formats are dxt, pvrtc, atc, etc, etc2, and astc.
Note that this is only supported on Android.
-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.
-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.

Examples

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

The following command executes Unity in batch mode, and updates from the Asset server using the supplied project path. The method executes after all Assets are downloaded and imported from the Asset server. After the function has finished execution, Unity automatically quits.

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

Unity Editor special command line arguments

You should only use these under special circumstances, or when directed by Unity Support.

Command Details
-enableIncompatibleAssetDowngrade Use this when you have Assets made by a newer, incompatible version of Unity, that you want to downgrade to work with your current version of Unity. When enabled, Unity presents you with a dialog asking for confirmation of this downgrade if you attempt to open a project that would require it.
Note: This procedure is unsupported and highly risky, and should only be used as a last resort.

Unity Standalone Player command line arguments

Standalone players built with Unity also understand some command line arguments:

Command Details
-adapter N (Windows only) Allows the game to run full-screen on another display. The N maps to a Direct3D display adaptor. In most cases there is a one-to-one relationship between adapters and video cards. On cards that support multi-head (that is, they can drive multiple monitors from a single card) each “head” may be its own adapter.
-batchmode Run the game in “headless” mode. The game does not display anything or accept user input. This is mostly useful for running servers for networked games.
-force-d3d11 (Windows only) Force the game to use Direct3D 11 for rendering.
-force-d3d11-no-singlethreaded Force DirectX 11.0 to be created without a D3D11_CREATE_DEVICE_SINGLETHREADED flag.
-force-device-index Make the Standalone Player use a particular GPU device by passing it the index of that GPU (macOS only).
-force-gfx-metal Make the Standalone Player use Metal as the default graphics API (macOS only).
-force-glcore 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 Similar to -force-glcore, but requests a specific OpenGL context version. Accepted values for XY: 32, 33, 40, 41, 42, 43, 44 or 45.
-force-clamped Used together with -force-glcoreXY, this prevents checking for additional OpenGL extensions, allowing it to run between platforms with the same code paths.
-force-low-power-device Make the Standalone Player use a low power device (macOS only).
-force-wayland Activate experimental Wayland support when running a Linux player.
-nographics When running in batch mode, do not initialize graphics device at all. This makes it possible to run your automated workflows on machines that don’t even have a GPU.
-nolog (Linux & Windows only) Do not produce an output log. Normally output_log.txt is written in the *_Data folder next to the game executable, where Debug.Log output is printed.
-popupwindow Create the window as a a pop-up window, without a frame.
-screen-fullscreen Override the default full-screen state. This must be 0 or 1.
-screen-height Override the default screen height. This must be an integer from a supported resolution.
-screen-width Override the default screen width. This must be an integer from a supported resolution.
-screen-quality Override the default screen quality. Example usage would be: /path/to/myGame -screen-quality Beautiful
-show-screen-selector Forces the screen selector dialog to be shown.
-single-instance (Linux & Windows only) Allow only one instance of the game to run at the time. If another instance is already running then launching it again with -single-instance focuses the existing one.
-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

Universal Windows Platform command line arguments

Universal Windows Apps don’t accept command line arguments by default, so to pass them you need to call a special function from MainPage.xaml.cs/cpp or MainPage.cs/cpp. For example:

appCallbacks.AddCommandLineArg("-nolog");

You should call this before the appCallbacks.Initialize() function.

Command Details
-nolog Don’t produce UnityPlayer.log.
-force-driver-type-warp Force the DirectX 11.0 driver type WARP device (see Microsoft’s documentation on Windows Advanced Rasterization Platform for more information).
-force-d3d11-no-singlethreaded Force DirectX 11.0 to be created without a D3D11_CREATE_DEVICE_SINGLETHREADED flag.
-force-gfx-direct Force single threaded rendering.
-force-feature-level–9–3 Force DirectX 11.0 feature level 9.3.
-force-feature-level–10–0 Force DirectX 11.0 feature level 10.0.
-force-feature-level–10–1 Force DirectX 11.0 feature level 10.1.
-force-feature-level–11–0 Force DirectX 11.0 feature level 11.0.

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

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

  • “noUpm”, “setDefaultPlatformTextureFormat” and “CacheServerIPAddress” command line options added in Unity 2018.1 NewIn20181

  • “Application.isBatchMode” operator added in 2018.2 NewIn20182

ビルドプレイヤーパイプライン
Batch mode and built-in coroutine compatibility