Command line arguments
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 Windows, you should type
"C:\Program Files (x86)\Unity\Editor\Unity.exe"
...at the command prompt.
Standalone Unity games can be launched in a similar way.
Command Line Arguments
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 arguments:-
- -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.
- -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).
- -buildWindowsPlayer <pathname>
- Build a standalone Windows player (eg, -buildWindowsPlayer path/to/your/build.exe).
- -buildOSXPlayer <pathname>
- Build a standalone Mac OSX player (eg, -buildOSXPlayer path/to/your/build.app).
- -importPackage <pathname>
- Import the given package. No import dialog is shown.
- -createProject <pathname>
- Create an empty project at the given path.
- -projectPath <pathname>
- Open the project at the given path.
- -logFile <pathname>
- Specify where the Editor log file will be written.
- -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.
- -exportPackage <exportAssetPath exportFileName>
- Exports a package given a path. 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 a whole folder at a time. This command normally needs to be used with the -projectPath argument.
- -nographics (Windows only)
- 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.
- -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 have a script in an Editor folder and a static function in the class.
// 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, ...); }
Example usage
Execute Unity in batch mode, execute MyEditorScript.MyMethod
method, and quit 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
Execute Unity in batch mode. Use the project path given and update from the asset server. Execute the given method after all assets have been downloaded and imported from the asset server. After the method has finished execution, automatically quit 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 Standalone Player command line arguments
Standalone players built with Unity also understand some command line arguments:
- -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-opengl (Windows only)
- Make the game use OpenGL for rendering, even if Direct3D is available. Normally Direct3D is used but OpenGL is used if Direct3D 9.0c is not available.
- -single-instance (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. - -nolog (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. - -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.
- -adapter N (Windows only)
- Allows the game to run full-screen on another display, where N denotes the display number.
- -popupwindow (Windows only)
- The window will be created as a a pop-up window (without a frame).
Editor Installer
The following options can be used when installing the Unity Editor from command line:
- /S (Windows only)
- Performs a silent (no questions asked) install.
- /D=PATH (Windows only)
- Sets the default install directory. Useful when combined with the silent install option.
Example usage
Install Unity silently to E:\Development\Unity.
Windows:UnitySetup.exe /S /D=E:\Development\Unity