下面是Unity引擎常用命令行参数大全,适用于Unity编辑器和Unity构建出的可执行程序。这些参数可以用于自动化构建、批处理、调试、性能分析等场景。
一、Unity编辑器命令行参数
1. 启动与项目相关
参数 | 说明 |
---|---|
-projectPath <path> | 指定要打开的Unity项目路径 |
-createProject <path> | 在指定路径创建新项目 |
-logFile <path> | 指定日志输出文件(默认Editor.log) |
-batchmode | 批处理模式(无界面,常用于CI/CD自动化) |
-quit | 执行完命令后自动退出Unity |
-nographics | 不初始化图形界面(用于服务器/自动化) |
-silent-crashes | 崩溃时不弹出对话框,直接退出 |
2. 构建相关
参数 | 说明 |
---|---|
-buildTarget <target> | 指定构建平台(如 Win64、Android、iOS、WebGL 等) |
-executeMethod <Class.Method> | 执行指定的静态C#方法(常用于自动化构建脚本) |
-buildWindowsPlayer <path> | 构建Windows可执行文件到指定路径 |
-buildOSXUniversalPlayer <path> | 构建Mac可执行文件到指定路径 |
-buildLinux64Player <path> | 构建Linux可执行文件到指定路径 |
-buildWebGLPlayer <path> | 构建WebGL到指定路径 |
-buildTarget <target> | 指定构建目标平台 |
-exportPackage <assets> <package.unitypackage> | 导出资源包 |
3. 运行与调试
参数 | 说明 |
---|---|
-force-opengl | 强制使用OpenGL渲染 |
-force-d3d11 | 强制使用Direct3D 11 |
-force-glcore | 强制使用OpenGL Core |
-force-metal | 强制使用Metal(Mac/iOS) |
-force-vulkan | 强制使用Vulkan |
-debugCodeOptimization | 启用代码优化调试 |
-enableStackTrace | 启用堆栈跟踪 |
4. 其他常用参数
参数 | 说明 |
---|---|
-username <username> | 登录Unity账号(自动化激活) |
-password <password> | 登录Unity账号密码 |
-serial <serial> | Unity序列号(自动激活) |
-manualLicenseFile <path> | 指定手动激活的license文件 |
-accept-apiupdate | 自动接受API升级提示 |
-noUpm | 禁用Unity Package Manager |
-disable-assembly-updater | 禁用程序集自动更新 |
二、Unity Player(构建后可执行程序)命令行参数
参数 | 说明 |
---|---|
-screen-width <width> | 设置窗口宽度 |
-screen-height <height> | 设置窗口高度 |
-screen-fullscreen <0/1> | 是否全屏 |
-adapter <N> | 指定使用第N个显卡 |
-force-d3d11 | 强制使用Direct3D 11 |
-force-opengl | 强制使用OpenGL |
-force-vulkan | 强制使用Vulkan |
-logFile <path> | 指定日志输出文件 |
-batchmode | 批处理模式(无界面) |
-nographics | 不初始化图形界面 |
-popupwindow | 无边框窗口模式 |
-show-screen-selector | 启动时显示分辨率选择窗口 |
-single-instance | 只允许一个实例运行 |
-parentHWND <hwnd> | 作为子窗口嵌入到指定窗口句柄 |
三、常用自动化构建命令行示例
# Windows下自动构建
Unity.exe -quit -batchmode -projectPath "D:\MyProject" -executeMethod BuildScript.PerformBuild -buildTarget Win64 -logFile D:\build.log
# Mac下自动构建
/Applications/Unity/Hub/Editor/2022.3.0f1/Unity.app/Contents/MacOS/Unity -quit -batchmode -projectPath "/Users/xxx/MyProject" -executeMethod BuildScript.PerformBuild -buildTarget OSXUniversal -logFile /Users/xxx/build.log
四、官方文档与参考
温馨提示
- 命令行参数区分大小写,路径建议用绝对路径。
-executeMethod
后面跟的是静态方法,格式为命名空间.类名.方法名
。- 批处理模式下,Unity不会弹出任何窗口,适合CI/CD自动化。
- 构建脚本需提前写好并放在Editor文件夹下。
好的,下面我将继续补充Unity命令行相关内容,包括:
- 更详细的参数说明与使用技巧
- 自动化构建脚本(C#)示例
- CI/CD集成建议(Jenkins/GitLab CI等)
- 常见命令行报错与排查方法
- 实用小技巧与注意事项
1. 更详细的参数说明与使用技巧
编辑器参数补充
参数 | 说明 |
---|---|
-importPackage <package.unitypackage> | 启动时自动导入指定的UnityPackage |
-runEditorTests | 运行编辑器测试(需Test Runner支持) |
-runTests | 运行所有测试(编辑器和PlayMode) |
-testResults <path> | 指定测试结果输出路径(XML) |
-buildPlayer <path> | 构建Player到指定路径(自动识别平台) |
-executeMethod | 可多次使用,依次执行多个静态方法 |
-customBuildName <name> | 自定义构建包名(需脚本支持) |
-customBuildPath <path> | 自定义构建输出路径(需脚本支持) |
Player参数补充
参数 | 说明 |
---|---|
-batchmode | 适合服务器端无头运行(如Unity Dedicated Server) |
-nographics | 适合纯逻辑服务器,节省资源 |
-force-device-index <N> | 指定使用第N个物理设备(如多GPU服务器) |
-adapter <N> | 指定显卡(多显卡机器) |
-nolog | 不生成日志文件 |
-disable-gpu-skinning | 禁用GPU蒙皮 |
-disable-graphics | 禁用所有图形渲染 |
2. 自动化构建脚本(C#)示例
Editor/BuildScript.cs
using UnityEditor;
using System;
public class BuildScript
{
public static void PerformBuild()
{
string[] scenes = { "Assets/Scenes/Main.unity" };
string buildPath = "Builds/Windows/MyGame.exe";
BuildPlayerOptions options = new BuildPlayerOptions
{
scenes = scenes,
locationPathName = buildPath,
target = BuildTarget.StandaloneWindows64,
options = BuildOptions.None
};
var report = BuildPipeline.BuildPlayer(options);
if (report.summary.result != UnityEditor.Build.Reporting.BuildResult.Succeeded)
{
throw new Exception("Build failed!");
}
}
}
命令行调用:
Unity.exe -quit -batchmode -projectPath "D:\MyProject" -executeMethod BuildScript.PerformBuild -logFile D:\build.log
3. CI/CD集成建议
Jenkins Pipeline 示例
pipeline {
agent any
stages {
stage('Build') {
steps {
bat '"C:\\Program Files\\Unity\\Hub\\Editor\\2022.3.0f1\\Editor\\Unity.exe" -quit -batchmode -projectPath "D:\\MyProject" -executeMethod BuildScript.PerformBuild -logFile D:\\build.log'
}
}
stage('Archive') {
steps {
archiveArtifacts artifacts: 'Builds/Windows/**', fingerprint: true
}
}
}
}
GitLab CI 示例
unity_build:
script:
- /opt/Unity/Editor/Unity -quit -batchmode -projectPath $CI_PROJECT_DIR -executeMethod BuildScript.PerformBuild -logFile $CI_PROJECT_DIR/build.log
artifacts:
paths:
- Builds/
4. 常见命令行报错与排查方法
报错 | 可能原因 | 解决方法 |
---|---|---|
No valid Unity Editor license found | 没有激活Unity | 用 -username -password -serial 或 -manualLicenseFile 激活 |
Method not found: BuildScript.PerformBuild | 方法名/路径错误 | 确认方法为public static,且路径正确(含命名空间) |
Build failed! | 构建脚本异常 | 查看logFile日志,排查具体错误 |
Unknown command line argument | 参数拼写错误 | 检查参数拼写,参考官方文档 |
Cannot open project | 路径错误/权限不足 | 检查-projectPath 路径,确保有读写权限 |
5. 实用小技巧与注意事项
- 路径建议用绝对路径,避免相对路径在CI/CD环境下出错。
- 日志文件:
-logFile
参数可指定日志输出,便于排查问题。 - 多平台构建:可用不同的
-buildTarget
参数,或在脚本中循环构建多平台包。 - 自动化测试:结合
-runTests
和-testResults
,可在CI中自动跑单元测试。 - License激活:CI服务器首次用命令行激活Unity时,需提前准备好账号/序列号或license文件。
- Unity版本:CI环境建议锁定Unity版本,避免因版本升级导致构建失败。
下面我将继续补充Unity命令行相关的进阶内容,包括:
- 多平台自动化构建脚本示例
- 自动化测试(EditMode/PlayMode)命令行用法
- Unity License自动激活与释放命令行流程
- 常见CI环境(如Docker)下的Unity命令行实践
- 命令行参数调试与日志分析技巧
1. 多平台自动化构建脚本示例
你可以用一个C#脚本实现一键多平台打包:
using UnityEditor;
using System;
public class MultiPlatformBuild
{
public static void BuildAll()
{
string[] scenes = { "Assets/Scenes/Main.unity" };
// Windows
BuildPipeline.BuildPlayer(scenes, "Builds/Windows/MyGame.exe", BuildTarget.StandaloneWindows64, BuildOptions.None);
// Mac
BuildPipeline.BuildPlayer(scenes, "Builds/Mac/MyGame.app", BuildTarget.StandaloneOSX, BuildOptions.None);
// Android
BuildPipeline.BuildPlayer(scenes, "Builds/Android/MyGame.apk", BuildTarget.Android, BuildOptions.None);
// WebGL
BuildPipeline.BuildPlayer(scenes, "Builds/WebGL", BuildTarget.WebGL, BuildOptions.None);
}
}
命令行调用:
Unity.exe -quit -batchmode -projectPath "D:\MyProject" -executeMethod MultiPlatformBuild.BuildAll -logFile D:\build.log
2. 自动化测试(EditMode/PlayMode)命令行用法
Unity支持命令行自动跑测试,适合CI集成。
常用参数:
-runTests
:运行所有测试(EditMode和PlayMode)-testPlatform editmode
或-testPlatform playmode
:指定测试类型-testResults <path>
:测试结果输出为XML(可供Jenkins、GitLab等解析)
示例:
Unity.exe -batchmode -projectPath "D:\MyProject" -runTests -testPlatform editmode -testResults D:\editmode-results.xml -logFile D:\test.log
注意:
- 测试脚本需放在
Editor
或Tests
文件夹下。 - 可结合CI工具自动分析测试结果。
3. Unity License自动激活与释放命令行流程
激活License(首次在CI服务器上用命令行构建时需要):
Unity.exe -batchmode -nographics -logFile D:\unity-activate.log -username "your@email.com" -password "yourpassword" -serial "XXXX-XXXX-XXXX-XXXX-XXXX"
或用手动license文件:
Unity.exe -batchmode -nographics -logFile D:\unity-activate.log -manualLicenseFile "D:\Unity_v2022.x.ulf"
释放License(CI服务器销毁前,避免license浪费):
Unity.exe -batchmode -returnlicense -logFile D:\unity-release.log
注意事项:
- License激活/释放建议在CI流水线的初始化和清理阶段自动执行。
- License激活失败时,日志会有详细报错。
4. 常见CI环境(如Docker)下的Unity命令行实践
Unity官方有Docker镜像,适合无头自动化构建:
Dockerfile示例:
FROM unityci/editor:2022.3.0f1-windows-mono-0.16.0
COPY . /project
WORKDIR /project
CMD ["unity-editor", "-batchmode", "-nographics", "-projectPath", "/project", "-executeMethod", "BuildScript.PerformBuild", "-quit", "-logFile", "/project/build.log"]
CI/CD流水线中常见用法:
- 先激活license(可用环境变量传递账号/序列号)
- 执行构建命令
- 构建完成后释放license
- 导出构建产物和日志
5. 命令行参数调试与日志分析技巧
- -logFile:始终指定日志文件,便于后续分析。
- 查看Editor.log/Player.log:Windows下在
C:\Users\用户名\AppData\Local\Unity\Editor\Editor.log
,Linux/Mac在~/.config/unity3d/Editor.log
。 - CI环境建议保存所有日志,便于回溯问题。
- 常见问题排查:
- 构建失败时,先看日志中是否有脚本编译错误、资源丢失、License问题。
- 测试失败时,分析XML报告和log,定位具体用例。
- License激活失败时,检查网络、账号、license数量。
6. 进阶技巧
- 多方法执行:
-executeMethod
可多次使用,依次执行多个静态方法。 - 参数传递:可通过环境变量、配置文件、命令行参数传递自定义参数到构建脚本(如版本号、渠道号等)。
- 自动化打包版本号:在构建脚本中自动读取Git提交号、时间戳等,写入PlayerSettings。
- 分布式构建:大型项目可用多台CI机器并行构建不同平台,提升效率。