Unity引擎命令行大全

下面是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命令行相关内容,包括:

  1. 更详细的参数说明与使用技巧
  2. 自动化构建脚本(C#)示例
  3. CI/CD集成建议(Jenkins/GitLab CI等)
  4. 常见命令行报错与排查方法
  5. 实用小技巧与注意事项

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命令行相关的进阶内容,包括:

  1. 多平台自动化构建脚本示例
  2. 自动化测试(EditMode/PlayMode)命令行用法
  3. Unity License自动激活与释放命令行流程
  4. 常见CI环境(如Docker)下的Unity命令行实践
  5. 命令行参数调试与日志分析技巧

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

注意:

  • 测试脚本需放在EditorTests文件夹下。
  • 可结合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机器并行构建不同平台,提升效率。

7. 参考链接


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你一身傲骨怎能输

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值