# Unity Editor 命令行参数

> A list of arguments you can use when you launch a version of the Unity Editor from the command line.

您可以从命令行启动 Unity Editor，并输入参数来更改 Editor 的启动方式。还可以在启动时使用命令行执行项目的 C# 脚本中的特定方法（请参阅[启动时执行方法的脚本示例](#example-execute-methods)）。

**注意**：要使用本页面上的信息，您需要了解如何使用操作系统的命令行界面来启动应用程序以及运行命令行参数。

启动 Unity Editor 时，命令行参数值的分隔符为单个空格。例如，要将窗口模式设置为无边框，请用 `-window-mode borderless`。

## 启动 Unity

要通过命令提示符或终端启动 Unity 项目，请先输入 Unity 应用程序的目录路径，然后输入 `-projectPath` 和目标项目的目录路径。

以下说明假定 Unity Editor 通过 Unity Hub 安装在默认位置。

在 macOS 上，在终端中输入以下命令来启动 Unity：

`/Applications/Unity/Hub/Editor/<version>/Unity.app/Contents/MacOS/Unity -projectPath <project path>`

在 Linux 上，在终端 (Terminal) 输入以下命令来启动 Unity：

`/home/<user>/Unity/Hub/Editor/<version>/Editor/Unity -projectPath <project path>`

在 Windows 上，在命令提示符下输入以下命令来启动 Unity：

`"C:\Program Files\Unity\Hub\Editor\<version>\Editor\Unity.exe" -projectPath "<project path>"`

以这种方式启动 Unity 时，会在启动时收到命令和信息，这对于测试套件、自动构建和其他生产任务会有帮助。

**注意**：

* 如果使用安装在其他位置的 Unity Editor，请调整命令中的路径。有关如何查找 Editor 位置路径的更多信息，请参阅[安装和卸载 Editor 版本](https://docs.unity3d.com/hub/manual/AddEditor.html#locate-the-editor-application-file)。

* 在 Windows 平台上传参数时，请确保目录路径不以单个反斜杠结尾，以防语法错误。使用双反斜杠 (`\\`) 或不使用反斜杠。例如：

  ```
  * `"C:\Program Files\Unity\Hub\Editor\<version>\Editor\Unity.exe" -projectPath "C:\MyUnityProjects\MyProject"`
  * `"C:\Program Files\Unity\Hub\Editor\<version>\Editor\Unity.exe" -createProject "C:\MyUnityProjects\MyProject\\"`
  ```

## 配置参数

可以在启动时运行 Unity Editor 并使用其他命令和信息构建 Unity 应用程序。本页面列出了可用于启动和配置 Unity Editor 和 Unity Player 实例的命令行参数。

| **命令**                                                                                          | **详细信息：**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-createProject <pathname>`                                                                     | 在指定路径中创建一个空项目。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `-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`（无论存储在哪个文件夹中），并且仅当存储在 `subfolder` 文件夹下时才忽略 `A2.dll`：如果在 `-disable-assembly-updater` 命令行参数中列出程序集（或者未指定程序集），Unity 会将以下消息记录到 [Editor.log](/engine/6000.0/manual/scripting/debugging-and-diagnostics/log-files.md)：`[Assembly Updater] warning: Ignoring assembly [assembly_path] as requested by command line parameter.”).`使用它可避免导入程序集时不必要的 [API Updater](/engine/6000.0/manual/install-and-upgrade/upgrade-guides/apiupdater.md) 开销。如果要导入用于访问不需更新的 Unity API 的程序集，此参数很有用。在导入完全不访问任何 Unity API 的程序集时也很有用（例如，如果在 Unity 之外构建了部分或全部源代码，并且想将生成的程序集导入 Unity 项目中）。**注意**：如果对任何需要更新的程序集禁用更新，则可能会在编译时和/或运行时都出现难以跟踪的错误。 |
| `-disable-gpu-skinning`                                                                         | 在启动时禁用图形处理单元 (GPU) 蒙皮。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `-executeMethod <ClassName.MethodName>` 或 `-executeMethod <NamespaceName.ClassName.MethodName>` | Unity 打开项目后以及可选的资源服务器更新完成后，立即执行静态方法。可以使用此命令执行连续集成、单元测试、构建或准备数据等任务。要从命令行进程返回错误信息，要么抛出异常（这会导致 Unity 退出并显示返回代码 1），要么调用 [EditorApplication.Exit](/engine/6000.0/script-reference/unity-editor/editor-application/exit.md)（这会显示非零返回代码）。要传递参数，请将它们添加到命令行，并使用 `System.Environment.GetCommandLineArgs` 在函数内检索它们。要使用 `-executeMethod`，需要将包裹脚本放在 Editor 文件夹中。执行的方法必须定义为 static。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `-exportPackage <exportAssetPath1 exportAssetPath2 ExportAssetPath3 exportFileName>`            | 在指定路径（或指定路径集）的情况下导出资源包。在此示例中，`exportAssetPath` 是要从 Unity 项目导出的文件夹（相对于 Unity 项目根目录），`exportFileName` 是资源包名称。此选项一次只能导出整个文件夹。通常需要将此命令与 `-projectPath` 参数一起使用。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `-importPackage <pathname>`                                                                     | 导入指定的[资源包](/engine/6000.0/manual/working-in-unity/assets-and-media/asset-workflow/asset-packages/create.md)。Unity 不显示任何导入对话框。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `-job-worker-count <N>`                                                                         | 指定 Unity JobQueue [Job Worker Count](/engine/6000.0/script-reference/unity-jobs-low-level-unsafe/jobs-utility/job-worker-maximum-count.md) 的最大线程数。对于 Unity 独立平台播放器，也可以将此值设置为 `boot.config` 中的 `job-worker-count=<N>`。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `-logFile <pathname>`                                                                           | 指定 Unity 写入 Editor 或操作系统的独立日志文件的位置。要输出到控制台，请指定 `-` 为路径名。在 Windows 上，使用 `-logfile` 将输出定向到 `stdout`（默认情况下不是控制台）。另请参阅 `-upmLogFile`。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `-noUpm`                                                                                        | 禁用 Unity Package Manager。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `-openfile <path>`                                                                              | 从场景或软件包文件的路径打开项目。还可以使用 `-projectPath` 参数                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `-password <password>`                                                                          | 在激活 Unity Editor 期间，在登录窗中输入密码。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `-projectPath <pathname>`                                                                       | 在指定路径下打开项目。如果路径名包含空格，请将其用引号括起来。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `-quit`                                                                                         | 在其他命令执行完毕后退出 Unity Editor。这可能导致错误消息被隐藏（但它们仍会出现在 `Editor.log` 文件中）。如果 Unity 还连接到 **Accelerator** 缓存服务器，则需要命令行参数 `-cacheServerWaitForUploadCompletion` 以防止 Unity 在任何待处理的缓存上传完成之前退出。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `-releaseCodeOptimization`                                                                      | 启用发行代码优化模式，覆盖会话的当前默认代码优化模式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `-setDefaultPlatformTextureFormat`（仅限 Android）                                                  | 在导入纹理或构建项目之前，将默认纹理**压缩**设置为所需的格式。这样就不必再用所需格式导入纹理。可用的格式为 dxt、pvrtc、atc、etc、etc2 和 astc。启用[纹理压缩目标](/engine/6000.0/manual/platform-specific/android/building-and-delivering/distribution/google-play.md#texture-compression-targeting)时，请忽略此参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `-overrideTextureCompression`                                                                   | 覆盖 Unity 在导入资源时使用的纹理压缩设置。在本地开发期间，这对于加快纹理导入或切换构建目标非常有用。更多详细信息，请参阅有关 [EditorUserBuildSettings.overrideTextureCompression](/engine/6000.0/script-reference/unity-editor/editor-user-build-settings/override-texture-compression.md) 的 API 参考文档。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `-silent-crashes`                                                                               | 阻止 Unity 显示独立当平台播放器崩溃时出现的对话框。如果想在自动构建或测试中运行播放器（此时不希望对话框提示阻碍自动化过程），此参数非常有用。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `-upmLogFile <pathname>`                                                                        | 当 Unity 为独立于 Editor 运行的 UPM 后台应用程序写入日志文件时，为其指定路径和文件名。您可以在同一命令中指定 `-upmLogFile` 和 `-logFile`。如果同时包含两个参数，则可以为两个日志文件指定独立路径。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `-username <username>`                                                                          | 在激活 Unity Editor 期间，在登录窗体中输入用户名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| `-vcsMode <mode>`                                                                               | 设置版本控制模式。可用模式有 `"Visible Meta Files"`、`"Hidden Meta Files"`、`Perforce` 和 `PlasticSCM`。您可以使用附加标志来填写给定版本控制模式的配置字段。这些标志基于 [Provider.GetActiveConfigFields](/engine/6000.0/script-reference/unity-editor-version-control/provider/get-active-config-fields.md) 方法。例如，您可以使用 `-vcPerforceUsername`、`-vcPerforcePassword`、`-vcPerforceWorkspace` 和 `-vcPerforceServer` 设置 Perforce 用户名、工作空间和服务器字段。**注意**：包含空格的 `<mode>` 参数必须用双引号 (“”) 括起来。                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `-vcsModeSession <mode>`                                                                        | 设置此会话的版本控制模式。可用模式有 `"Visible Meta Files"`、`"Hidden Meta Files"`、`Perforce` 和 `PlasticSCM`。您可以使用附加标志来填写给定版本控制模式的配置字段。这些标志基于 [Provider.GetActiveConfigFields](/engine/6000.0/script-reference/unity-editor-version-control/provider/get-active-config-fields.md) 方法。例如，您可以使用 `-vcPerforceUsername`、`-vcPerforcePassword`、`-vcPerforceWorkspace` 和 `-vcPerforceServer` 设置 Perforce 用户名、工作空间和服务器字段。**注意**：包含空格的 `<mode>` 参数必须用双引号 (“”) 括起来。                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `-version`                                                                                      | 在命令行中打印 Unity Editor 的版本号，无需启动 Editor。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `-timestamps`                                                                                   | 以当前时间戳和线程 ID 作为每条 [Editor.log](/engine/6000.0/manual/scripting/debugging-and-diagnostics/log-files.md) 消息的前缀。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

## 批处理模式参数

使用以下参数可配置 Unity 的批处理模式。批处理模式使 Unity 能在无用户输入的情况下运行预定义任务，这使得批处理模式对于测试等自动化任务非常有用。更多信息，请参阅[批处理模式和内置协程兼容性](/engine/6000.0/manual/unity-editor/editor-features/command-line-arguments/clibatchmode-coroutines.md)。

| **命令**                  | **详细信息：**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `-accept-apiupdate`     | 使用此命令行选项时，可指定在批处理模式下启动 Unity 时应运行 APIUpdater。示例：`unity.exe -accept-apiupdate -batchmode [other params]`在批处理模式下启动 Unity 时，如果省略此命令行参数，APIUpdater 将不会运行。这样可能导致编译器错误。                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `-batchmode`            | 以批处理模式运行 Unity。在批处理模式下，Unity 可以运行命令行参数，无需人工交互。它还会阻止需要人机交互的弹出窗口（例如“保存场景”(Save Scene) 窗口）。使用命令行参数时，应始终以批处理模式运行 Unity，因为这样可以不间断地运行自动化。在执行脚本代码期间发生异常时，资源服务器更新失败时，或其他操作失败时，Unity 将立即退出并返回代码 **1**。在批处理模式下，Unity 会将其日志输出的最小版本发送到控制台。但是，[日志文件](/engine/6000.0/manual/scripting/debugging-and-diagnostics/log-files.md)仍包含完整的日志信息。当 Editor 打开某个项目时，您无法以批处理模式打开同一项目；一次只能运行一个 Unity 实例。要检查 Editor 或独立平台播放器是否以批处理模式运行，请使用 [Application.isBatchMode](/engine/6000.0/script-reference/unity-engine/application/is-batch-mode.md) 运算符。如果在使用 `-batchmode` 时尚未导入项目，则目标平台就是默认平台。要强制使用不同的平台，请使用 `-buildTarget` 选项。 |
| `‑ignorecompilererrors` | 使用此参数时，即使存在编译错误，Unity 也会继续启动应用程序。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `-nographics`           | 在批处理模式下运行此命令时，Unity 不会初始化图形设备。因此您可以在没有 GPU 的机器上运行自动化工作流程。自动工作流程仅在窗口处于焦点时才有效，否则无法发送模拟输入命令。`-nographics` 不允许烘焙全局光照（GI），因为 Enlighten 实时全局光照需要 GPU 进行 Meta Pass 渲染（更多信息请参阅[光照贴图和着色器页面的 Meta Pass 部分](/engine/6000.0/manual/lighting-overview/lighting-birp/meta-pass.md)）。**注意**：输出日志在此模式下会被关闭。要启用输出日志的创建，请使用命令 `-logFile` 指定文件位置。                                                                                                                                                                                                                                                                   |

## 构建参数

使用以下参数，可通过命令行针对不同平台构建播放器。有关使用命令行参数构建播放器的更多信息，请参阅 [Unity 独立平台播放器命令行参数](/engine/6000.0/manual/unity-editor/editor-features/command-line-arguments/player.md)。

| **命令**                                     | **详细信息：**                                                                                                                                                                                                                                                                                                                                                     |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-activeBuildProfile <pathname>`           | 将保存在给定路径中的构建配置文件设置为活跃构建配置文件（例如 `-activeBuildProfile "Assets/Settings/Build Profiles/WindowsDemo.asset"`）。**注意：**`-activeBuildProfile <pathname>` 在编译前，运用活跃构建配置文件的 **Build data** 部分中的自定义脚本定义。这些脚本定义是附加的，不覆盖项目中的其他脚本定义。                                                                                                                                        |
| `-build <pathName>`                        | 构建一个从 `activeBuildProfile <pathname>` 到指定目标路径的播放器。对于某些平台，路径必须以目标平台指定的文件扩展名结尾。例如，`-build path/to/your/build.exe`。有关哪些平台需要扩展的信息，请参阅[目标平台构建路径要求](/engine/6000.0/manual/platform-specific/cross-platform-features/build-path-requirements.md)。                                                                                                                    |
| `-buildLinux64Player <pathname>`           | 构建 64 位独立平台 Linux 播放器（例如 `-buildLinux64Player path/to/your/build`）。                                                                                                                                                                                                                                                                                           |
| `-buildLinuxHeadlessSimulation <pathname>` | 构建 64 位 Linux 无头 (headless) 模拟播放器（例如 `-buildLinuxHeadlessSimulation path/to/your/build`）。                                                                                                                                                                                                                                                                     |
| `-buildOSXUniversalPlayer <pathname>`      | 构建 64 位独立平台 macOS 播放器（例如 `-buildOSXUniversalPlayer path/to/your/build.app`）。                                                                                                                                                                                                                                                                                  |
| `-buildTarget <name>`                      | 选择要启动 Editor 的活跃构建目标。可用的选项取决于您在 Editor 中启用了哪些构建目标。这些选项对应于通过 API 枚举 [`BuildTarget`](/engine/6000.0/script-reference/unity-editor/build-target.md) 提供的选项。可能的选项包括：• `win64`• `win`• `osxuniversal`• `linux64`• `android`• `ios`• `webgl`• `tvos`• `windowsstoreapps`• `cloudrendering`• `visionos`如果您是可访问封闭平台的开发者，可能还有其他可用的 `-buildTarget` 选项。更多详细信息，请参阅目标平台的文档。 |
| `-standaloneBuildSubtarget <name>`         | 在加载项目之前，为独立平台选择活跃的构建子目标。可能的选项包括：• 播放器• 服务器                                                                                                                                                                                                                                                                                                                    |
| `-buildWindowsPlayer <pathname>`           | 构建 32 位独立平台 Windows 播放器（例如 `-buildWindowsPlayer path/to/your/build.exe`）。                                                                                                                                                                                                                                                                                     |
| `-buildWindows64Player <pathname>`         | 构建 64 位独立平台 Windows 播放器（例如 `-buildWindows64Player path/to/your/build.exe`）。                                                                                                                                                                                                                                                                                   |

## Accelerator 缓存服务器参数

使用以下参数可配置 Unity 对 [Unity Accelerator](/engine/6000.0/manual/working-in-unity/assets-and-media/unity-accelerator.md) 缓存服务器的使用。这些参数会覆盖 Editor Preferences 中存储的任何相应配置。

| **命令**                                      | **详细信息：**                                                                                                                                                                                                                      |
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `-EnableCacheServer`                        | 启用 Accelerator 缓存服务器。还必须使用 `-cacheServerEndpoint <host:port>` 指定缓存服务器的地址。                                                                                                                                                      |
| `-cacheServerEndpoint <host:port>`          | 指定 Accelerator 缓存服务器的终端地址。示例：`-cacheServerEndpoint 127.0.0.1:10080`                                                                                                                                                            |
| `-cacheServerNamespacePrefix <prefix>`      | 设置 Accelerator 缓存服务器的命名空间前缀。使用此参数和命名空间名称可对缓存服务器上的数据进行分区，例如为不同项目或 Unity 版本隔离缓存数据。示例：`-cacheServerNamespacePrefix MyProject_Unity23LTS`包含空格的前缀必须用双引号 (`"`) 括起来。所提供的名称将用作缓存中最多 3 个命名空间的前缀，这些命名空间按类型（元数据、Artifact 数据和着色器缓存数据）区分数据。 |
| \`-cacheServerEnableDownload \<true         | false>\`                                                                                                                                                                                                                       |
| \`-cacheServerEnableUpload \<true           | false>\`                                                                                                                                                                                                                       |
| `-cacheServerWaitForConnection <ms>`        | 先指定 Unity 在加载项目时等待连接到 Accelerator 缓存服务器的时间（以毫秒为单位），然后开始初始项目刷新。示例：`-cacheServerWaitForConnection 5000`                                                                                                                          |
| `-cacheServerWaitForUploadCompletion`       | 防止在 Accelerator 缓存服务器完成上传之前关闭 Unity。当 Accelerator 与命令行参数 `-quit` 结合使用时，建议使用该参数；在其他脚本命令执行完毕后，此参数会关闭 Unity Editor。                                                                                                               |
| `-cacheServerDownloadBatchSize <batchSize>` | 设置单个 Accelerator 缓存服务器下载批次中的 Artifact 数量。下载批次是一种优化，通过将单个下载组合为更大批次，从而减少下载操作的次数。示例：`-cacheServerDownloadBatchSize 256`默认值为 `128`。                                                                                                |
| `-cacheServerUploadExistingImports`         | 在 Unity 开始将新的导入资源上传到 Accelerator 缓存服务器时，会上传所有以前未上传的现有导入资源。以前上传过的导入资源不会重新上传。                                                                                                                                                    |
| `-cacheServerUploadAllRevisions`            | 在 Unity 开始将新的导入资源上传到 Accelerator 缓存服务器时，会上传所有现有导入资源，其中包括资产数据库记录的、之前从未上传过的所有历史修订版本。以前上传过的导入资源的修订版不会重新上传。                                                                                                                        |
| `-cacheServerUploadExistingShaderCache`     | 在 Unity 开始将新的导入资源上传到 Accelerator 缓存服务器时，会上传所有以前未上传的现有着色器缓存导入资源。以前上传过的着色器导入资源不会重新上传。                                                                                                                                            |

## 调试参数

| **命令**                          | **详细信息：**                                                                                         |
| ------------------------------- | ------------------------------------------------------------------------------------------------- |
| `-disableManagedDebugger`       | 禁用调试器监听套接字。                                                                                       |
| `-diag-debug-shader-compiler`   | Unity 仅启动一个**着色器**编译器实例，并将其超时强制设为一小时。对于调试着色器编译器 (Shader Compiler) 问题很有用。                          |
| `-debugCodeOptimization`        | 启用调试代码优化模式，覆盖会话的当前默认代码优化模式。                                                                       |
| `-enableCodeCoverage`           | 启用代码覆盖率并允许访问 [Coverage API](/engine/6000.0/script-reference/unity-engine-test-tools/coverage.md)。 |
| `-force-d3d12-debug`            | 启用 DX12 验证层。这对于处理 XR 插件或原生插件很有用。                                                                  |
| `-force-d3d12-debug-gbv`        | 启用基于 DX12 GPU 的验证。这对于处理 XR 插件或原生插件很有用。                                                            |
| `-force-vulkan-layers`          | 启用 Vulkan 验证层。这对于处理 XR 插件或原生插件很有用。                                                                |
| `-stackTraceLogType`            | 允许进行详细调试。所有设置都允许选择 **None**、**Script Only** 和 **Full**（例如 `-stackTraceLogType Full`）。             |
| `-log-memory-performance-stats` | 关闭编辑器时，将详细的内存和性能报告添加到 Unity Editor 主日志文件中。                                                        |

## 图形 API 参数

使用以下参数可强制 Unity Editor 使用特定的图形 API。

| **命令**                       | **详细信息：**                                                                                                                                          |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-force-d3d11`（仅限 Windows）：  | 让 Editor 使用 Direct3D 11 进行渲染。通常，图形 API 取决于**播放器设置**（通常默认为 D3D11）。                                                                                  |
| `-force-d3d12`（仅限 Windows）：  | 让 Editor 使用 Direct3D 12 进行渲染。通常，图形 API 取决于**播放器设置 (Player Settings)**。                                                                             |
| `-force-opengl`              | 让 Editor 使用旧版 OpenGL 后端。                                                                                                                           |
| `-force-glcore`              | 让 Editor 使用 OpenGL 3/4 Core 配置文件进行渲染。Editor 会尝试使用可用的最佳 OpenGL 版本以及 OpenGL 驱动程序公开的所有 OpenGL 扩展。如果该平台不受支持，则在编辑器上使用 Direct3D。                         |
| `-force-glcoreXY`            | 与 `-force-glcore` 类似，但会请求特定的 OpenGL 上下文版本。XY 的可接受值：32、33、40、41、42、43、44 或 45。如果平台不支持 OpenGL 的特定版本，Unity 将回退到支持的版本。                                 |
| `-force-gles`（仅限 Windows）：   | 让 Editor 使用 OpenGL for Embedded Systems 进行渲染。Editor 会尝试使用可用的最佳 OpenGL ES 版本以及 OpenGL 驱动程序公开的所有 OpenGL ES 扩展。                                       |
| `-force-glesXY`（仅限 Windows）： | 与 `-force-gles` 类似，但请求特定的 OpenGL ES 上下文版本。XY 的可接受值：30、31、31aep 或 32。如果平台不支持 OpenGL ES 的特定版本，Unity 将回退到支持的版本。如果平台不支持 OpenGL ES，Unity 将回退到另一个图形 API。 |
| `-force-vulkan`              | 让 Editor 使用 Vulkan 进行渲染。通常，图形 API 取决于**播放器设置 (Player Settings)**。                                                                                  |
| `-force-clamped`             | 此命令与 `-force-glcoreXY` 一起使用以阻止 Unity 检查其他 OpenGL 扩展，允许在具有相同代码路径的平台之间运行。此方法有助于确定问题是否与平台有关。例如驱动程序错误。                                                 |

## 许可证参数

使用以下参数可以处理 Unity 许可证或使用不同的许可证选项运行 Unity Editor。

| **命令**                             | **详细信息：**                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-createManualActivationFile`      | 手动激活 Unity 许可证的[三步过程](/engine/6000.0/manual/install-and-upgrade/licenses-and-activation/manual-activation-guide.md)的第一步。更多信息，请参阅[从命令行生成许可证激活文件 (.alf)](/engine/6000.0/manual/install-and-upgrade/licenses-and-activation/manual-activation-guide.md#alf-commandline)。                                                                                                                                                                          |
| `-manualLicenseFile <yourulffile>` | 手动激活 Unity 许可证的[三步过程](/engine/6000.0/manual/install-and-upgrade/licenses-and-activation/manual-activation-guide.md)的第三步。更多信息，请参阅[从命令行生成许可证激活文件 (.alf)](/engine/6000.0/manual/install-and-upgrade/licenses-and-activation/manual-activation-guide.md#ulf-commandline)。                                                                                                                                                                          |
| `-returnlicense`                   | 退回当前活跃的基于序列或命名的用户许可证。请勿使用 `-returnlicense` 退回浮动许可证。更多信息，请参阅[退回许可证](/engine/6000.0/manual/install-and-upgrade/licenses-and-activation/managing-your-unity-license.md#license-return-cli)。有关许可模型的更多信息，请参阅[许可概述](/engine/6000.0/manual/install-and-upgrade/licenses-and-activation/license-overview.md)。                                                                                                                                          |
| `-serial <serial-key>`             | 激活付费的 Unity 许可证。包含 `<serial-key>` 值以激活基于序列的许可证，或同时激活指定的用户许可证及其序列密钥。排除 `<serial-key>` 值以在不激活其序列密钥的情况下激活指定的用户许可证。更多信息，请参阅[从命令行激活许可证](/engine/6000.0/manual/install-and-upgrade/licenses-and-activation/managing-your-unity-license.md#license-activation-cli)。有关许可模型的更多信息，请参阅[许可概述](/engine/6000.0/manual/install-and-upgrade/licenses-and-activation/license-overview.md)。**注意**：当您使用 `-serial` 参数时，还必须使用 `-batchmode` 参数。指定 `-quit` 参数也是一种好方法。 |

## Metal 参数（仅限 macOS）

使用以下参数可配置 Unity 对 Apple 设备使用 [Metal](/engine/6000.0/manual/platform-specific/cross-platform-features/graphics-apis/metal.md) 图形 API 的情况。

| **命令**                              | **详细信息：**                                                 |
| ----------------------------------- | --------------------------------------------------------- |
| `-force-device-index`               | 使用 Metal 时，通过传递 GPU 设备的索引，让 Editor 使用特定 GPU 设备（仅限 macOS）。 |
| `-force-low-power-device`（仅限 macOS） | 如果使用 Metal，让 Editor 使用低功耗设备。                              |
| `-force-metal`                      | 让 Editor 使用 Metal 作为默认图形 API（仅限 macOS）。                   |
| `-enable-metal-capture`             | 启用在 Editor 中进行 Metal 捕获的功能。                               |

## Profiler 参数

使用以下参数可配置 Unity 对 [Profiler](/engine/6000.0/manual/analysis/profiler.md) 的使用。

| **命令**                                           | **详细信息：**                                                                                                                                                                                                                                                             |
| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-deepprofiling`                                 | 对 [CPU profiler](/engine/6000.0/manual/analysis/profiler/window.md) 启用深度性能分析 (Deep Profiling) 选项。                                                                                                                                                                     |
| `-profiler-enable`                               | 对播放器或 Editor 的启动进行性能分析。将此参数与播放器一起使用时，效果与在[构建配置文件 (Build Profiles) ](/engine/6000.0/manual/unity-editor/editor-features/build-settings/build-profiles.md)中启用 **Autoconnect Profiler** 选项来构建播放器的效果相同。将此参数与 Editor 一起使用时，在 Editor 启动时会开始在 Profiler 窗口中收集和显示 Profiler 信息。 |
| `-profiler-log-file <Path/To/Log/File.raw>`      | 此参数可以设置 [Unity Profiler](/engine/6000.0/manual/analysis/profiler.md) 在启动时将性能分析数据流式传输到 .raw 文件。对播放器和 Editor 都有效。                                                                                                                                                       |
| `-profiler-capture-frame-count <NumberOfFrames>` | 此参数可以设置在启动期间流式传输到 .raw 文件时 Profiler 应该在性能分析中捕获多少帧。仅对播放器有效。                                                                                                                                                                                                            |
| `-profiler-maxusedmemory`                        | 默认情况下，Unity Profiler 的 `maxUsedMemory` 是 16MB（对于播放器）和 256MB（对于 Editor）。可以在启动时使用此参数将 `maxUsedMemory` 参数设置为自定义大小（例如`-profiler-maxusedmemory 16777216`）。此大小以字节为单位。                                                                                                       |

## Unity Editor 特殊命令行参数

应该只在特殊情况下或者在 Unity 支持人员的指导下使用这些命令行参数。

| **命令**                              | **详细信息：**                                                                                                                                                                                                      |
| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-enableIncompatibleAssetDowngrade` | 如果资源由较新的不兼容 Unity 版本制作而成，并希望将其降级以便与当前版本的 Unity 一起使用，请使用此选项。启用此选项后，如果要尝试打开需要该资源的项目，Unity 会显示一个对话框，要求确认此降级。注意：此过程不受支持且风险很高，应仅用作最后的手段。                                                                            |
| `-giCustomCacheLocation`            | 用此设置[全局光照 (GI) 缓存](/engine/6000.0/manual/lighting-overview/direct-and-indirect-lighting/lightmap-data/gicache.md)文件夹的自定义位置。\*\*注意：\*\*关闭 Editor 时，`giCustomCacheLocation` 会恢复为 GI 缓存的默认位置，或者恢复为自定义位置（如果以前设置过）。 |

## Unity Hub 特殊命令行参数

应该只在特殊情况下或者在 Unity 支持人员的指导下使用这些命令行参数。这些参数用于默认不使用 Unity Hub 的 Unity Editor 版本。

| **命令**          | **详细信息：**                             |
| --------------- | ------------------------------------- |
| `-useHub`       | 启动与 Hub 集成的 Unity Editor。             |
| `-hubIPC`       | 启用 Unity Editor 与 Unity Hub 之间的通信和交互。 |
| `-hubSessionId` | 指定 Unity Hub 会话的唯一标识符。                |

在 Unity Editor 的所有受支持版本中，这些参数均默认已设置完成。

## 来自包的额外编辑器参数

附加编辑器命令行参数在安装这些资源包后可用。

| **软件包**        | **详细信息：**                                                                                                                               |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| Burst          | 请参阅 [Burst](https://docs.unity3d.com/Packages/com.unity.burst@latest/) 软件包文档。                                                           |
| Test Framework | 请参阅 [Unity Test Framework](https://docs.unity3d.com/Packages/com.unity.test-framework@latest/) 软件包文档。                                   |
| Code Coverage  | 请参阅[代码覆盖率 (Code Coverage) ](https://docs.unity3d.com/Packages/com.unity.testtools.codecoverage@1.2/manual/CoverageBatchmode.html)软件包文档。 |

## 启动时执行方法的脚本示例

您可以在启动时使用命令行执行项目的 C# 脚本中的特定方法。下面的示例演示了一个 C# 脚本以及在启动时执行该脚本方法的命令行参数。

项目中的 C# 脚本示例：

```lang-C#
using UnityEditor;
class MyEditorScript
{
     static void PerformBuild ()
     {
        BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
        buildPlayerOptions.scenes = new[] { "Assets/Scene1.unity", "Assets/Scene2.unity" };
        BuildPipeline.BuildPlayer(buildPlayerOptions);
     }
}
```

以下命令以批处理模式执行 Unity，执行上述脚本中的 `MyEditorScript.PerformBuild` 方法，并在完成后退出。

**Windows：**

```
"C:\Program Files\Unity\Hub\Editor\<version>\Editor\Unity.exe" -quit -batchmode -projectPath "C:\Users\UserName\Documents\MyProject" -executeMethod
MyEditorScript.PerformBuild
```

**macOS：**

```
/Applications/Unity/Hub/Editor/<version>/Unity.app/Contents/MacOS/Unity -quit -batchmode -projectPath ~/UnityProjects/MyProject -executeMethod
MyEditorScript.PerformBuild
```

\*\*注意：\*\*在 Editor 路径中，将 `<version>` 替换为要启动的 Unity 版本，如果 Unity Editor 路径不是默认路径，则完全替换该路径。
