Typically, Unity will be launched by double-clicking its icon from the desktop but it is also possible to run it from the command line (ie, the MacOS Terminal or the Windows Command Prompt). When launched in this way, Unity can receive commands and information on startup, which can be very useful for test suites, automated builds and other production tasks.
Under MacOS, you can launch Unity from the Terminal by typing:
/Applications/Unity/Unity.app/Contents/MacOS/Unity
…while under 64 bit Windows, you should type
"C:\Program Files\Unity\Editor\Unity.exe"
… or this under 32 bit Windows
"C:\Program Files (x86)\Unity\Editor\Unity.exe"
…at the command prompt.
Standalone Unity games can be launched in a similar way.
Under MacOS, you can activate Unity from the Terminal by typing:
/Applications/Unity/Unity.app/Contents/MacOS/Unity -quit -batchmode -serial R3-XXXX-XXXX-XXXX-XXXX-XXXX -username '[email protected]' -password 'MyPassw0rd'
On PC you can use Command prompt:
…while under 64 bit Windows, you should type
"C:\Program Files\Unity\Editor\Unity.exe" -quit -batchmode -serial R3-XXXX-XXXX-XXXX-XXXX-XXXX -username "[email protected]" -password "MyPassw0rd"
… or this under 32 bit Windows
"C:\Program Files (x86)\Unity\Editor\Unity.exe" -quit -batchmode -serial R3-XXXX-XXXX-XXXX-XXXX-XXXX -username "[email protected]" -password "MyPassw0rd"
As mentioned above, the editor and also built games can optionally be supplied with additional commands and information on startup. This is done using the following command line options:-
-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 no project name is given then the last project opened by Unity is used. If no project exists at the path given by -projectPath then one is created automatically. |
-batchmode | Run Unity in batch mode. This should always be used in conjunction with the other command line arguments as it ensures no pop up windows appear and eliminates the need for any human intervention. When an exception occurs during execution of script code, asset server updates fail or other operations fail Unity will immediately exit with return code 1. Note that in batch mode, Unity will send a minimal version of its log output to the console. However, the Log Files still contain the full log information. Note that opening a project in batch mode whilst the Editor has the same project open is not supported. Only a single instance of Unity can run at a time. |
-buildLinux32Player <pathname> | Build a 32-bit standalone Linux player (e.g. -buildLinux32Player path/to/your/build). |
-buildLinux64Player <pathname> | Build a 64-bit standalone Linux player (e.g. -buildLinux64Player path/to/your/build). |
-buildLinuxUniversalPlayer <pathname> | Build a combined 32-bit and 64-bit standalone Linux player (e.g. -buildLinuxUniversalPlayer path/to/your/build). |
-buildOSXPlayer <pathname> | Build a 32-bit standalone Mac OSX player (e.g. -buildOSXPlayer path/to/your/build.app). |
-buildOSX64Player <pathname> | Build a 64-bit standalone Mac OSX player (e.g. -buildOSX64Player path/to/your/build.app). |
-buildOSXUniversalPlayer <pathname> | Build a combined 32-bit and 64-bit standalone Mac OSX 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, xbox360, xboxone, ps4, psp2, wsaplayer, tizen, samsungtv. |
-buildWindowsPlayer <pathname> | Build a 32-bit standalone Windows player (e.g. -buildWindowsPlayer path/to/your/build.exe). |
-buildWindows64Player <pathname> | Build a 64-bit standalone Windows player (e.g. -buildWindows64Player path/to/your/build.exe). |
-cleanedLogFile | Detailed debugging feature. StackTraceLogging allows features to be controlled to allow detailed logging. All settings allow None, Script Only and Full to be selected. |
-createProject <pathname> | Create an empty project at the given path. |
-editorTestsCategories | Filter editor tests by categories. Separate test categories with a comma. |
-editorTestsFilter | Filter editor tests by names. Separate test names with a comma. |
-editorTestsResultFile | Path where the result file should be placed. If the path is a folder, a default file name will be used. If not specified, the results will be places in project’s root folder. |
-executeMethod <ClassName.MethodName> | Execute the static method as soon as Unity is started, the project is open and after the optional asset server update has been performed. This can be used to do continous integration, perform Unit Tests, make builds, prepare some data, etc. If you want to return an error from the commandline process you can either throw an exception which will cause Unity to exit with 1 or else call EditorApplication.Exit with a non-zero code. If you want to pass parameters you can add them to the command line and retrieve them inside the method using System.Environment.GetCommandLineArgs. To use -executeMethod , you need to place the enclosing script in an Editor folder. The method to be executed must be defined as static. |
-exportPackage <exportAssetPath1 exportAssetPath2 ExportAssetPath3 exportFileName> | Exports a package given a path (or set of given paths). 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 can only export whole folders at a time. This command normally needs to be used with the -projectPath argument. |
-force-d3d9 (Windows only) | Make the editor use Direct3D 9 for rendering. Normally the graphics API depends on player settings (typically defaults to D3D11). |
-force-d3d11 (Windows only) | Make the editor use Direct3D 11 for rendering. Normally the graphics API depends on player settings (typically defaults to D3D11). |
-force-glcore (Windows only) | Make the editor use OpenGL 3/4 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 only) | Similar to -force-glcore but request a specific OpenGL context version. Accepted values for XY: 32, 33, 40, 41, 42, 43, 44 or 45. |
-force-gles (Windows only) | Make the editor use OpenGL for Embedded Systems for rendering. The editor tries to use the best OpenGL ES version available and all OpenGL ES extensions exposed by the OpenGL drivers. |
-force-glesXY (Windows only) | Similar to -force-gles but request a specific OpenGL ES context version. Accepted values for XY: 30, 31 or 32. |
-force-clamped (Windows only) | Used together with -force-glcoreXY, but it prevents checking for additional OpenGL extensions allowing to run between platforms with the same code paths |
-force-free | Make the editor run as if there is a free Unity license on the machine, even if a Unity Pro license is installed. |
-importPackage <pathname> | Import the given package. No import dialog is shown. |
-logFile <pathname> | Specify where the Editor or Windows/Linux/OSX standalone log file will be written. |
-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 (automated workflows only work, when you have a window in focus, otherwise you can’t send simulated input commands). Please note -nographics will not allow you to bake GI on OSX, since Enlighten requires GPU acceleration. |
-password <password> | The password of the user - needed when activating. |
-projectPath <pathname> | Open the project at the given path. |
-quit | Quit the Unity editor after other commands have finished executing. Note that this can cause error messages to be hidden (but they will show up in the Editor.log file). |
-returnlicense | Return the currently active license to the license server. Please allow a few seconds before license file is removed, as Unity needs to communicate with the license server. This option is new in Unity 5.0. |
-runEditorTests | Run editor tests from the project. This argument requires projectPath and it’s good to run it with batchmode argument. quit is not required as the editor will automatically close down after the run is finished. |
-serial <serial> | Activates Unity with the specified serial key. It is recommended to pass “-batchmode -quit” arguments as well, in order to quit Unity when done, if using this for automated activation of Unity. Please allow a few seconds before license file is created, as Unity needs to communicate with the license server. Make sure that license file folder exists, and has appropriate permissions before running Unity with this argument. In case activation fails, see the Editor.log for info. This option is new in Unity 5.0. |
-silent-crashes | Don’t display crash dialog. |
-username <username> | Enters a username into the log in form during activation of the Unity editor. |
// C# example
using UnityEditor;
class MyEditorScript
{
static void PerformBuild ()
{
string[] scenes = { "Assets/MyScene.unity" };
BuildPipeline.BuildPlayer(scenes, ...);
}
}
// JavaScript example
static void PerformBuild ()
{
string[] scenes = { "Assets/MyScene.unity" };
BuildPipeline.BuildPlayer(scenes, ...);
}
The following command executes Unity in batch mode, executes the MyEditorScript.MyMethod
method and then quits upon completion.
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
The next command executes Unity in batch mode and updates from the asset server using the supplied project path. The method is executed after all assets have been downloaded and imported from the asset server. After the method 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
These should only be used under special circumstances, or when directed by Support.
-enableIncompatibleAssetDowngrade | Use when you have content made by a newer, incompatible version of Unity, that you want to downgrade to work with your current version of Unity. When enabled, Unity will present you with a dialog asking for confirmation of such a downgrade if you attempt to open a project that would require it. This procedure is unsupported and highly risky, and should only be used as a last resort. |
Standalone players built with Unity also understand some command line arguments:
-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 (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 will not display anything or accept user input. This is mostly useful for running servers for networked games. |
-force-d3d9 (Windows only) | Make the game use Direct3D 9 for rendering. Normally the graphics API depends on player settings (typically defaults to D3D11). |
-force-d3d9-ref (Windows only) | Make the game run using Direct3D’s “Reference” software renderer. The DirectX SDK has to be installed for this to work. This is mostly useful for building automated test suites, where you want to ensure rendering is exactly the same no matter what graphics card is being used. |
-force-d3d11 (Windows only) | Make the game use Direct3D 11 for rendering. |
-force-d3d11-no-singlethreaded | Force DirectX 11.0 to be created without D3D11_CREATE_DEVICE_SINGLETHREADED flag. |
-force-glcore (Windows only) | Make the editor use OpenGL core profile for rendering. The editor tries to use on 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 only) | Similar to -force-glcore but request a specific OpenGL context version. Accepted values for XY: 32, 33, 40, 41, 42, 43, 44 or 45. |
-force-clamped (Windows only) | Used together with -force-glcoreXY, but it prevents checking for additional OpenGL extensions allowing to run between platforms with the same code paths |
-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 output log. Normally output_log.txt is written in the *_Data folder next to the game executable, where Debug.Log output is printed. |
-popupwindow | The window will be created as a a pop-up window (without a frame). |
-screen-fullscreen | Overrides the default fullscreen state. This must be 0 or 1. |
-screen-height | Overrides the default screen height. This must be an integer from a supported resolution. |
-screen-width | Overrides the default screen width. This must be an integer from a supported resolution. |
-screen-quality | Overrides 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 will just focus the existing one. |
-parentHWND <HWND> (Windows only) | Embeds Windows Standalone application into another application, you have to pass parent application’s window handle to Windows Standalone application. See this example EmbeddedWindow.zip for more information. |
Windows Store Apps don’t accept command line arguments by default, so to pass them you have to call a special function from App.xaml.cs/cpp or App.cs/cpp. For example,
appCallbacks.AddCommandLineArg("-nolog");
You should call this before the appCallbacks.Initialize*()
function.
-nolog | Don’t produce UnityPlayer.log. |
-force-driver-type-warp | Force DirectX 11.0 WARP device (More info http://msdn.microsoft.com/en-us/library/gg615082.aspx) |
-force-d3d11-no-singlethreaded | Force DirectX 11.0 to be created without D3D11_CREATE_DEVICE_SINGLETHREADED flag. |
-force-gfx-direct | Force single threaded rendering. |
-force-feature-level–9–1 | Force DirectX 11.0 feature level 9.1. |
-force-feature-level–9–2 | Force DirectX 11.0 feature level 9.2. |
-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. |