可以从命令行运行 Unity(从 macOS 终端或 Windows 命令提示符)。
在 macOS 上,在终端中输入以下命令来启动 Unity:
/Applications/Unity/Unity.app/Contents/MacOS/Unity
在 Windows 上,在命令提示符下输入以下命令来启动 Unity:
"C:\Program Files\Unity\Editor\Unity.exe"
以这种方式启动时,Unity 会在启动时收到命令和信息,这对于测试套件、自动构建和其他生产任务非常有用。
注意:使用相同方法来启动独立平台 Unity 应用程序。
可以在启动时运行 Editor 并使用其他命令和信息构建 Unity 应用程序。本节将介绍可用的命令行选项。
命令 | 详细信息 |
---|---|
-accept-apiupdate |
使用此命令行选项可指定在批处理模式下启动 Unity 时应运行 APIUpdater。 示例: unity.exe -accept-apiupdate -batchmode [other params] 在批处理模式下启动 Unity 时省略此命令行参数会导致 APIUpdater 不运行。这种情况下可能导致编译器错误。 |
-batchmode
|
以批处理模式运行 Unity。在批处理模式下,Unity 无需人工交互即可运行命令行参数。它还会禁止需要人工交互的弹出窗口(例如 Save Scene 窗口);但是,Unity 编辑器本身会像往常一样打开。使用命令行参数时,您应该始终以批处理模式运行 Unity,因为它允许自动化运行而不会中断。 在执行脚本代码期间发生异常,资源服务器更新失败,或其他操作失败时,Unity 将立即退出并返回代码 1。 请注意,在批处理模式下,Unity 会将其日志输出的最小版本发送到控制台。但是,日志文件仍包含完整的日志信息。当 Editor 打开某个项目时,您无法以批处理模式打开相同的项目;一次只能运行一个 Unity 实例。 要检查是否正在以批处理模式运行 Editor 或独立平台播放器,请使用 Application.isBatchMode 运算符。 如果在使用 -batchmode 时还没有导入项目,则目标平台为默认平台。要强制选择其他平台,请使用 -buildTarget 选项。 |
-buildLinux64Player <pathname> |
构建 64 位独立平台 Linux 播放器(例如,-buildLinux64Player path/to/your/build )。 |
-buildOSXUniversalPlayer <pathname> |
构建 64 位独立平台 Mac OSX 播放器(例如,-buildOSXUniversalPlayer path/to/your/build.app )。 |
-buildTarget <name> |
在加载项目之前选择有效的构建目标。可能的选项包括: Standalone、Win、Win64、OSXUniversal、Linux64、iOS、Android、WebGL、XboxOne、PS4、WindowsStoreApps、Switch、tvOS。 |
-buildWindowsPlayer <pathname> |
构建 32 位独立平台 Windows 播放器(例如,-buildWindowsPlayer path/to/your/build.exe )。 |
-buildWindows64Player <pathname> |
构建 64 位独立平台 Windows 播放器(例如,-buildWindows64Player path/to/your/build.exe )。 |
-createManualActivationFile |
手动激活 Unity 许可证三步过程的第一步。有关更多信息,请参阅从命令行生成许可证激活文件 (.alf )。 |
-createProject <pathname> |
在指定路径中创建一个空项目。 |
-debugCodeOptimization |
启用调试代码优化模式,覆盖会话的当前默认代码优化模式。 |
-deepprofiling |
对 CPU 性能分析器启用深度性能分析选项。 |
-disable-assembly-updater <assembly1 assembly2> |
指定一个以空格分隔的程序集名称列表作为 Unity 在自动更新时忽略的参数。 以空格分隔的程序集名称列表是可选的:如果传递命令行选项时不带任何程序集名称,表示忽略所有程序集,如示例 1 所示。 示例 1 unity.exe -disable-assembly-updater 示例 2 unity.exe -disable-assembly-updater A1.dll subfolder/A2.dll 示例 2 有两个程序集名称,其中一个具有路径名。示例 2 无论 A1.dll 存储在哪个文件夹中都会将其忽略,但只有 A2.dll 存储在 subfolder 文件夹下时才会将其忽略:如果在 -disable-assembly-updater 命令行参数中列出程序集(或者如果不指定程序集),Unity 会将以下消息记录到 Editor.log:[Assembly Updater] warning: Ignoring assembly [assembly_path] as requested by command line parameter."). 可用于在导入程序集时避免不必要的 API Updater 开销。 如果知道 Unity API 不需要更新,对于导入访问 Unity API 的程序集非常有用。在导入完全不访问 Unity API 的程序集时也很有用(例如,如果在 Unity 之外构建了源代码或其中部分代码,并且想要将生成的程序集导入到 Unity 项目中)。 注意:如果对任何需要更新的程序集禁用更新,则可能会在编译时和/或运行时都出现难以跟踪的错误。 |
-disableManagedDebugger |
禁用调试器监听套接字。 |
-diag-debug-shader-compiler |
Unity 仅启动一个着色器编译器实例,并将其超时强制为一小时。对于调试着色器编译器问题很有用。 |
-disable-gpu-skinning |
在启动时禁用 GPU 蒙皮。 |
-enableCodeCoverage |
启用代码覆盖率并允许访问 Coverage API。 |
-executeMethod <ClassName.MethodName> 或 -executeMethod <NamespaceName.ClassName.MethodName>
|
Unity 打开项目后以及可选的资源服务器更新完成后,立即执行静态方法。可以使用此命令来执行连续集成,执行单元测试,进行构建或准备数据等任务。要从命令行进程返回错误,要么抛出异常(这会导致 Unity 退出并显示返回代码 1__),要么调用 EditorApplication.Exit(这会显示非零返回代码)。要传递参数,请将它们添加到命令行,并使用 System.Environment.GetCommandLineArgs 在函数内检索它们。要使用 -executeMethod ,需要将包裹脚本放在 Editor 文件夹中。执行的方法必须定义为 static。|
|-exportPackage <exportAssetPath1 exportAssetPath2 ExportAssetPath3 exportFileName> |在指定路径(或指定路径集)的情况下导出资源包。在此示例中, exportAssetPath 是要从 Unity 项目导出的文件夹(相对于 Unity 项目根目录), exportFileName 是资源包名称。此选项一次只导出整个文件夹。通常需要将此命令与 -projectPath 参数一起使用。|
|-force-d3d11 (仅限 Windows)| 使 Editor 使用 Direct3D 11 进行渲染。通常,图形 API 取决于 Player Settings(通常默认为 D3D11)。 |
|-force-d3d12 (仅限 Windows)| 使 Editor 使用 Direct3D 12 进行渲染。通常,图形 API 取决于 Player Settings。|
|-force-device-index | 使用 Metal 时,通过传递 GPU 设备的索引,让 Editor 使用特定 GPU 设备(仅限 macOS)。|
|-force-metal | 使 Editor 使用 Metal 作为默认图形 API(仅限 macOS)。 |
|-force-glcore | 使编辑器使用 OpenGL 3/4 Core 配置文件进行渲染。编辑器会尝试使用可用的最佳 OpenGL 版本以及 OpenGL 驱动程序公开的所有 OpenGL 扩展。如果不支持该平台,编辑器则使用 Direct3D。 |
|-force-glcoreXY | 与 -force-glcore 类似,但请求特定的 OpenGL 上下文版本。XY 的可接受值:32、33、40、41、42、43、44 或 45。 |
|-force-gles (仅限 Windows)| 使 Editor 使用 OpenGL for Embedded Systems 进行渲染。Editor 会尝试使用可用的最佳 OpenGL ES 版本以及 OpenGL 驱动程序公开的所有 OpenGL ES 扩展。 |
|-force-glesXY (仅限 Windows)| 与 -force-gles 类似,但请求特定的 OpenGL ES 上下文版本。XY 的可接受值:30、31 或 32。 |
|-force-vulkan | 使 Editor 使用 Vulkan 进行渲染。通常,图形 API 取决于 Player Settings。|
|-force-clamped | 此命令与 -force-glcoreXY 一起使用以阻止 Unity 检查其他 OpenGL 扩展,允许在具有相同代码路径的平台之间运行。 |
|-force-free | 使 Editor 运行,就像机器上有免费的 Unity 许可证一样,即使安装了 Unity Pro 许可证也是如此。|
|-force-low-power-device (仅限 macOS)| 如果使用 Metal,让 Editor 使用低功耗设备。|
|-importPackage <pathname> |Import the given asset package. No import dialog is shown.|
|-job-worker-count <N> |为 Unity JobQueue Job Worker Count 指定最大线程数。您也可以在 Unity 独立平台播放器的 boot.config 中指定为 job-worker-count=<N> 。|
|-logFile <pathname> |指定 Unity 写入 Editor 或 Windows/Linux/OSX 独立日志文件的位置。要输出到控制台,请为路径名指定 - 。在 Windows 上,指定 - 选项将使输出进入 stdout ,这在默认情况下不是控制台。|
|-manualLicenseFile <yourulffile> |手动激活 Unity 许可证三步过程的第三步。有关更多信息,请参阅从命令行完成许可证激活。|
|-nographics | 在批处理模式下运行此命令时,不会初始化图形设备。因此,您可以在没有 GPU 的机器上运行自动化工作流程。自动工作流程仅在有窗口获得焦点时才起作用,否则无法发送模拟输入命令。请注意,-nographics 不允许烘焙 GI,因为 Enlighten 需要 GPU 加速。 |
|-noUpm | 禁用 Unity Package Manager。 |
|-openfile <path> |从场景或包文件的路径打开项目。或者,也可以使用 -projectPath 参数。 |
|-password <password> |在激活 Unity Editor 期间,在登录窗体中输入密码。|
|-profiler-enable |对播放器或 Editor 的启动进行性能分析。将此参数与播放器一起使用时,效果与在 Build Settings 中启用 Autoconnect Profiler__ 选项来构建播放器的效果相同。将此参数与 Editor 一起使用时,在 Editor 启动时会开始在 Profiler 窗口中收集和显示性能分析器信息。 |
-profiler-log-file <Path/To/Log/File.raw> |
此参数可以设置 Unity Profiler 在启动时将性能分析数据流式传输到 .raw 文件。对播放器和 Editor 都有效。 |
-profiler-capture-frame-count <NumberOfFrames> |
此参数可以设置在启动期间流式传输到 .raw 文件时性能分析器应该在性能分析中捕获多少帧。仅对播放器有效。 |
-profiler-maxusedmemory |
默认情况下,Unity Profiler 的 maxUsedMemory 值是 16MB(对于播放器)和 256MB(对于 Editor)。可以在启动时使用此参数将 maxUsedMemory 参数设置为自定义大小(例如,-profiler-maxusedmemory 16777216 )。此大小以字节为单位。 |
-projectPath <pathname> |
在指定路径下打开项目。如果路径名包含空格,请将其用引号引起来。 |
-quit |
在其他命令执行完毕后退出 Unity 编辑器。这可能导致错误消息被隐藏(但是,它们仍会出现在 Editor.log 文件中)。 |
-releaseCodeOptimization |
启用发行代码优化模式,覆盖会话的当前默认代码优化模式。 |
-returnlicense |
将当前激活的许可证退回到许可证服务器。有关更多信息,请参阅退回许可证。 |
-serial <serial> |
使用指定的序列号激活您的 Unity 许可证。有关更多信息,请参阅从命令行激活许可证. 注意:当您使用这个参数时,还必须使用 -batchmode 参数。指定 -quit 参数也是一种很好的做法。 |
-setDefaultPlatformTextureFormat (仅限 Android) |
在导入纹理或构建项目之前,将默认纹理压缩设置为所需的格式。这样就不必再使用所需的格式导入纹理。可用的格式为 dxt、pvrtc、atc、etc、etc2 和 astc。 |
-silent-crashes |
阻止 Unity 显示独立平台播放器崩溃时出现的对话框。希望在自动的构建或测试中运行播放器时(此时不希望对话框提示阻碍自动化过程),此参数非常有用。 |
-stackTraceLogType |
允许详细调试。所有设置都允许选择 None、Script Only 和 __Full__(例如 -stackTraceLogType Full )。 |
-username <username> |
在激活 Unity Editor 期间,在登录窗体中输入用户名。 |
-vcsMode <mode> |
设置版本控制模式。可用模式为 "Visible Meta Files" 、"Hidden Meta Files" 、Perforce 和 PlasticSCM 。您可以使用其他标志来填写给定版本控制模式的配置字段。这些标志基于 Provider.GetActiveConfigFields 方法。例如,可以使用 -vcPerforceUsername 、-vcPerforcePassword 、-vcPerforceWorkspace 和 -vcPerforceServer 来设置 Perforce 用户名、工作空间和服务器字段。注意:包含空格的 <mode> 参数必须用双引号 (" ) 引起来。 |
-vcsModeSession <mode> |
设置此会话的版本控制模式。可用模式为 "Visible Meta Files" 、"Hidden Meta Files" 、Perforce 和 PlasticSCM 。您可以使用其他标志来填写给定版本控制模式的配置字段。这些标志基于 Provider.GetActiveConfigFields 方法。例如,可以使用 -vcPerforceUsername 、-vcPerforcePassword 、-vcPerforceWorkspace 和 -vcPerforceServer 来设置 Perforce 用户名、工作空间和服务器字段。注意:包含空格的 <mode> 参数必须用双引号 (" ) 引起来。 |
-version |
在命令行中打印 Unity 编辑器的版本号,无需启动编辑器。 |
-EnableCacheServer |
告诉 Unity 使用较新的 Accelerator 缓存服务器。还必须使用 -cacheServerEndpoint 指定地址。 |
-cacheServerEndpoint |
如果使用的是较新的 Accelerator 缓存服务器,指定终端地址。 示例: -cacheServerEndpoint 127.0.0.1:10080 。这将覆盖 Editor Preferences 中存储的配置。使用此命令可将 Unity 的多个实例连接到不同缓存服务器。 |
-cacheServerNamespacePrefix |
设置较新的 Accelerator 缓存服务器的命名空间前缀。用于在缓存服务器上将数据分组在一起。 示例: -cacheServerNamespacePrefix MyProject
|
-cacheServerEnableDownload |
允许从较新的 Accelerator 缓存服务器进行下载。 示例: -cacheServerEnableDownload true
|
-cacheServerEnableUpload |
允许上传到较新的 Accelerator 缓存服务器。 示例: -cacheServerEnableUpload false
|
-CacheServerIPAddress <host:port> |
允许使用较旧的 (v1) 缓存服务器并指定在启动时要连接到的 IP 地址。这将覆盖 Editor Preferences 中存储的配置。使用此命令可将 Unity 的多个实例连接到不同 v1 缓存服务器。 |
项目中的 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 支持人员的指导下使用这些命令行参数。
命令 | 详细信息 |
---|---|
-enableIncompatibleAssetDowngrade |
如果资源由较新的不兼容 Unity 版本制作而成,并希望将其降级以便与当前版本的 Unity 一起使用,请使用此选项。启用此选项后,如果尝试打开需要该资源的项目,Unity 会显示一个对话框,要求确认此降级。 注意:此过程不受支持且风险很高,应仅用作最后的手段。 |
附加编辑器命令行参数在安装这些软件包后可用。
Package | 详细信息 |
---|---|
Burst | 请参阅 Burst 包文档。 |
Test Framework | 请参阅 Unity Test Framework 包文档。 |
使用 Unity 构建的独立平台播放器也能识别一些命令行参数:
命令 | 详细信息 |
---|---|
-batchmode |
以“无头”模式运行游戏。游戏不显示任何内容,也不接受用户输入。适合用于运行联网游戏的服务器。 |
-disable-gpu-skinning |
在启动时禁用 GPU 蒙皮。 |
-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) |
使独立平台播放器使用 Metal 作为默认图形 API。 |
-force-glcore |
强制游戏使用 OpenGL Core 配置文件进行渲染。Editor 会尝试使用可用的最佳 OpenGL 版本以及 OpenGL 驱动程序公开的所有 OpenGL 扩展。如果不支持该平台,则使用 Direct3D。 |
-force-glcoreXY |
与 -force-glcore 类似,但请求特定的 OpenGL 上下文版本。XY 的可接受值:32、33、40、41、42、43、44 或 45。 |
-force-vulkan |
强制游戏使用 Vulkan 进行渲染。 |
-force-clamped |
此命令与 -force-glcoreXY 一起使用可阻止检查其他 OpenGL 扩展,允许在具有相同代码路径的平台之间运行。 |
-force-low-power-device (仅限 macOS) |
使独立平台播放器使用低功耗设备。 |
-force-wayland |
运行 Linux 播放器时激活实验性 Wayland 支持。 |
-monitor N |
在指定的监视器上运行独立平台播放器,该监视器由基于 1 的索引号指示。 |
-nographics |
在批处理模式下运行此命令时,不会初始化图形设备。这样,在没有 GPU 的机器上可以运行自动化工作流程。 |
-nolog |
不生成输出日志。通常,Unity 将 output_log.txt 写入到 Log 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 启动画面后,其第二个最低位设置为 1。有关更多信息,请参阅此示例:EmbeddedWindow.zip |
-popupwindow |
将窗口创建为弹出窗口,不带框架。macOS 上不支持该命令。 |
-screen-fullscreen |
覆盖默认的全屏状态。此值必须是 0 或 1。 |
-screen-height |
覆盖默认屏幕高度。此值必须是受支持分辨率中的整数。 |
-screen-width |
覆盖默认屏幕宽度。此值必须是受支持分辨率中的整数。 |
-screen-quality |
覆盖默认屏幕质量。示例用法为:/path/to/myGame -screen-quality Beautiful 。支持的选项与 Quality Settings 名称匹配。 |
-single-instance (仅限 Linux 和 Windows) |
一次只运行一个应用程序实例。如果另一个实例已在运行,则使用 -single-instance 再次启动会聚焦现有实例。 |
-vrmode <devicetype> |
使用特定的 VR 设备启动。请参阅虚拟现实以了解详细信息。 |
-window-mode (仅限 Windows) |
覆盖全屏窗口模式。接受的值为 exclusive 或 borderless 。请参阅独立平台 Player 设置以了解详细信息。 |
通用 Windows 应用程序默认情况下不接受命令行参数,因此要传递命令行参数,必须从 MainPage.xaml.cs/cpp 或 MainPage.cs/cpp 调用一个特殊函数。例如:
appCallbacks.AddCommandLineArg("-nolog");
应在 appCallbacks.Initialize()
函数之前调用此函数。
命令 | 详细信息 |
---|---|
-nolog |
不生成 UnityPlayer.log。 |
-force-driver-type-warp |
强制使用 DirectX 11.0 驱动程序类型 WARP 设备(有关更多信息,请参阅 Microsoft 的 Windows 高级光栅化平台 (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。 |