Version: 2017.3
Сборка системы приложения
За кулисами

Command line arguments

Обычно, Unity будет запущен, если дважды кликнуть по ярлыку на рабочем столе, но его также можно запустить из командной строки (т.е. из терминала MacOS или из командной строки Windows). При запуске таким образом, можно задать Unity команды и информацию на старте, которые могут быть очень полезны для целей тестирования, автоматизированных сборок и других производственных целей.

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

Use the same method to launch standalone Unity games.

Launching Unity silently

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'

Note: When activating via the command line using continuous integration (CI) tools like Jenkins, add the -nographics flag to prevent a WindowServer error.

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"

Опции

Как упоминалось выше, редактор и собранные игры могут опционально быть запущены с дополнительными командами и указаниями. Это делается используя следующие опции командной строки:-

Command Details
-assetServerUpdate <IP[:port] projectName username password [r <revision>]> Вызывает обновление проекта в Сервере ассетов, в заданном IP:port. Порт может быть необязательным, и если он не дан, то это предполагает то, что он стандартный (10733). Рекомендуется использовать эту команду в связке в аргументом -projectPath, чтобы убедиться, что вы работаете с нужным проектом. Если имя проекта не задать, то будет открыт последний проект, использовавший Unity. Если по заданному пути -projectPath проекта не существует, то автоматически будет создан новый.
-batchmode Запускает Unity в режиме batch. Это всегда следует использовать в связке с другими аргументами командной строки, так как он обеспечивает то, что при старте не появятся никакие выскакивающие окна и это убирает необходимость вмешательства человека. Когда происходит исключение во время исполнения кода скрипта, сервер ассетов сообщает о падении или другие операции падают, Unity незамедлительно закроется с return кодом 1. Обратите внимание, что в режиме batch Unity будет отсылать в консоль минимально возможную версию лога. Однако файлы лога будут всё также содержать полные логи. Учтите, что открытие проекта в режиме batch, когда в редакторе открыт этот же проект, не поддерживается. Одновременно может быть запущена только одна копия Unity.
-buildLinux32Player <pathname> Собрать 32-битное приложение для Linux (например, -buildLinux32Player path/to/your/build).
-buildLinux64Player <pathname> Собрать 64-битное приложение для Linux (например, -buildLinux64Player path/to/your/build).
-buildLinuxUniversalPlayer <pathname> Собрать совмещённое 32-битное и 64-битное приложение для Linux (например, -buildLinuxUniversalPlayer path/to/your/build).
-buildOSXPlayer <pathname> Собрать 32-битное приложение для Mac OSX (например, -buildOSXPlayer path/to/your/build.app).
-buildOSX64Player <pathname> Собрать 64-битное приложение для Mac OSX (например, -buildOSX64Player path/to/your/build.app).
-buildOSXUniversalPlayer <pathname> Собрать совмещённое 32-битное и 64-битное приложение для Mac OSX (например, -buildOSXUniversalPlayer path/to/your/build.app).
-buildTarget <name> Allows the selection of an active build target before a project is loaded. Possible options are:
standalone, Win, Win64, OSXUniversal, Linux, Linux64, LinuxUniversal, iOS, Android, Web, WebStreamed, WebGL, XboxOne, PS4, PSP2, WindowsStoreApps, Switch, WiiU, N3DS, tvOS, PSM.
-buildWindowsPlayer <pathname> Собрать 32-битное приложение Windows (например, -buildWindowsPlayer path/to/your/build.exe).
-buildWindows64Player <pathname> Собрать 64-битное приложение Windows (например, -buildWindows64Player path/to/your/build.exe).
-stackTraceLogType Detailed debugging feature. StackTraceLogging allows features to be controlled to allow detailed logging. All settings allow None, Script Only and Full to be selected. (for example, -stackTraceLogType Full)
-createProject <pathname> Создать пустой проект по заданному пути.
-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 is used. If not specified, the results are placed in the project’s root folder.
-executeMethod <ClassName.MethodName> Исполняет статичный метод сразу, как только Unity запустится, проект откроется и, опционально, произойдёт обновление сервера ассетов. Это можно использовать для постоянной интеграции, проведения Unit тестов, сборки, подготовки данных и т.д. Если вы хотите, чтобы была возвращена ошибка из командной строки процесса, вы можете либо запустить исключение, которое вынудит Unity закрыться с результатом 1, либо вызвать EditorApplication.Exit с ненулевым кодом. Если вы хотите передать параметры, то вы можете добавить их в командную строку и получить их внутри метода используя System.Environment.GetCommandLineArgs.
-exportPackage <exportAssetPath1 exportAssetPath2 ExportAssetPath3 exportFileName> Экспортирует пакет по заданному пути (или набору путей). exportAssetPath это папка (относительно корневой папки Unity проекта), куда будет проводиться экспорт из Unity проекта и exportFileName это имя пакета. На данный момент, эта опция позволяет экспортировать только все папки за раз. Это команда обычно используется вместе с аргументом -projectPath.
-force-d3d11 (Windows only) Принуждает редактор использовать Direct3D 9. Это и так делается по умолчанию, поэтому обычно нет причин использовать эту команду.
-force-glcore 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 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-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 requests a specific OpenGL ES context version. Accepted values for XY: 30, 31 or 32.
-force-clamped Used with -force-glcoreXY to prevent checking for additional OpenGL extensions, allowing it 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> Импортирует выбранный пакет. Окно импорта показываться не будет.
-logFile <pathname> Задаёт, куда редактор, или приложение будет записывать логи.
-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). Please note that -nographics does not allow you to bake GI, since Enlighten requires GPU acceleration.
-password <password> The password of the user, required when launching.
-projectPath <pathname> Открыть проект по заданному пути.
-quit Закрывает редактор Unity после того, как другие команды были исполнены. Учтите, что из-за этого сообщения об ошибках могут быть скрыты (однако они появятся в файле Editor.log).
-returnlicense Return the currently active license to the license server. Please allow a few seconds before the license file is removed, because Unity needs to communicate with the license server.
-runEditorTests Run Editor tests from the project. This argument requires the projectPath, and it’s good practice to run it with batchmode argument. quit is not required, because the Editor automatically closes down after the run is finished.
-serial <serial> Activate Unity with the specified serial key. It is good practice to pass the -batchmode and -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 the license file is created, because 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. If activation fails, see the Editor.log for info.
-silent-crashes Don’t display a crash dialog.
-username <username> Enter a username into the log-in form during activation of the Unity Editor.
-password <password> Enter a password into the log-in form during activation of the Unity Editor.
-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.

Пример использования

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

Следующая команда запускает Unity в режиме batch и производит обновление с сервера ассетов используя заданный путь к проекту. После завершения загрузки и импорта всех ассетов с сервера ассетов, запускается метод. После завершения исполнения метода, 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

These should only be used 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

Приложения собранные в Unity так же воспринимают некоторые аргументы командной строки:

Command Details
-adapter N (Windows only) Позволяет игре работать в режиме full-screen на другом дисплее. Переменная N указывает на графический адаптер Direct3D. В большинстве случаев, есть связь типа “один-на-один” между адаптерами и видеокартами. На картах с мультиголовной поддержкой (они могут управлять несколькими мониторами одной картой) каждая “голова” может быть собственным адаптером.
-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) Принуждает игру использовать для рендеринга Direct3D 11.
-force-d3d11-no-singlethreaded Включает DirectX 11.0 без указателя D3D11_CREATE_DEVICE_SINGLETHREADED
-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-wayland Activate experimental Wayland support when running a Linux player.
-nographics При работе в режиме batсh, вообще не инициализирует графическое устройство. Это позволяет запустить автоматизированные рабочие процессы на устройствах, у которых даже нет графического процессора.
-nolog (Linux & Windows only) Не записывать логи. Обычно output_log.txt записан в папке *_Data рядом с исполняемым файлом игры, где печатается Debug.Log.
-popupwindow Окно будет создано как всплывающее окно (без рамки).
-screen-fullscreen Заменяет стандартную ширину экрана. Это должно целое число из диапазона поддерживаемого разрешения.
-screen-height Заменяет стандартную высоту экрана. Это должно целое число из диапазона поддерживаемого разрешения.
-screen-width Заменяет стандартную ширину экрана. Это должно целое число из диапазона поддерживаемого разрешения.
-screen-quality Заменяет стандартное качество изображения. Пример использования: /path/to/myGame -screen-quality Beautiful
-show-screen-selector Forces the screen selector dialog to be shown.
-single-instance (Linux & Windows only) Позволяет запускать только одну копию игру одновременно. Если другая копия уже запущена, то повторный запуск с -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

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 Не записывает UnityPlayer.log.
-force-driver-type-warp Включает DirectX 11.0 WARP device (Больше информации http://msdn.microsoft.com/en-us/library/gg615082.aspx)
-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.

  • 2017–08–07 Page amended with limited editorial review

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

Сборка системы приложения
За кулисами