Unity3d使用Jenkins自动化打包(Windows)(二)

文章目录


前言

自动化打包的价值在于让程序员更轻松地创建和管理构建工具链,提高编程效率,将繁杂的工作碎片化,变成人人(游戏行业特指策划)都能快速掌握的操作。在Unity行业中,这部分工作通常由程序员负责维护,而不同于其他行业可能有专门的运维团队负责。

自动化打包的大体原理是通过Jenkins调用脚本命令行执行操作,从而完成其他软件或平台的功能,使得繁杂的工作变得更加高效和可控。


一、Unity工程准备

新建一个Unity新项目,将示例场景添加到Build Settings。

创建Editor文件夹,并在该文件夹内创建BuildEditor脚本。

在BuildEditor脚本中创建静态方法BuildPC,并在Unity栏目Tools/BuildPC测试能成功打包。

csharp 复制代码
using UnityEditor;
public class BuildEditor 
{
    [MenuItem("Tools/BuildPC")]
    public static void BuildPC() {
        BuildPlayerOptions options = new BuildPlayerOptions();
        string[] scenePaths = new string[EditorBuildSettings.scenes.Length];
        for (int i = 0; i < EditorBuildSettings.scenes.Length; i++)
        {
            scenePaths[i] = EditorBuildSettings.scenes[i].path;
        }
        options.scenes = scenePaths;
        options.target = BuildTarget.StandaloneWindows;
        options.options = BuildOptions.None;
        options.locationPathName = @"E:\JenkinsProject\Test.exe";
        BuildPipeline.BuildPlayer(options);
    }
}

二、Unity调取命令行

参考官方文档

实战一

目标:通过Jenkins平台打包Unity项目。

在Windows上,Jenkins命令行填入

bash 复制代码
"C:\Program Files\Unity 2021.3.16f1\Editor\Unity.exe" -projectPath "E:\GameProject\BuildProject" -executeMethod BuildEditor.BuildPC -quit -batchmode

打包成功!

注意打包时项目不能被Unity打开,不然会导致打包失败。

实战二

目标:通过Jenkins平台打包Unity项目,但需要制定版号。

制定版号意味着我们需要将参数传递到unity,添加自定义参数并修改unity脚本。

1、添加自定义参数

2、命令行传参

bash 复制代码
"C:\Program Files\Unity 2021.3.16f1\Editor\Unity.exe" -projectPath "E:\GameProject\BuildProject"  --version:%_version% -executeMethod BuildEditor.BuildPC -quit -batchmode

3、脚本获取传递参数

cpp 复制代码
using UnityEditor;
public class BuildEditor 
{
    [MenuItem("Tools/BuildPC")]
    public static void BuildPC() {

        string[] args = System.Environment.GetCommandLineArgs();
        foreach (var a in args)
        {
            if (a.Contains("--version:"))
            {
                string version = a.Split(':')[1];
                //设置版本号
                PlayerSettings.bundleVersion = version;
            }
        }

        BuildPlayerOptions options = new BuildPlayerOptions();
        string[] scenePaths = new string[EditorBuildSettings.scenes.Length];
        for (int i = 0; i < EditorBuildSettings.scenes.Length; i++)
        {
            scenePaths[i] = EditorBuildSettings.scenes[i].path;
        }
        options.scenes = scenePaths;
        options.target = BuildTarget.StandaloneWindows;
        options.options = BuildOptions.None;
        options.locationPathName = @"E:\JenkinsProject\Test.exe";
        BuildPipeline.BuildPlayer(options);
    }

}

测试打包。

实战三

目标:通过Jenkins接入Luban,实现打表功能,完成后将数据上传git。

知道原理后,大家可自行实操,后续有空我会补上。

实战四

目标:在Unity打包安卓(apk)完成后将其上传到某平台(比如:飞书、钉钉之类)。

知道原理后,大家可自行实操,后续有空我会补上,安卓只需要配置一下sdk就可以出包了。

实战五

目标:在mac打包安卓(apk)和ios包(ipa)。

额,这个较麻烦点,但基本原理类似,而且在 macOS 上也有类似的控制台工具。如果没有实际工作需要,可能不会着急去更新相关内容。


总结

本文介绍了如何利用 Jenkins 实现 Unity 项目的自动化打包,并通过命令行传递参数指定版本号等内容。通过统一的工具链,我们提高了项目打包的效率和可控性,使版本管理更加灵活。

相关推荐
CHANG_THE_WORLD32 分钟前
C语言中的 %*s 和 %.*s 和C++的字符串格式化输出
c语言·c++·c#
霍格沃兹测试学院-小舟畅学40 分钟前
从“QA测两遍直接上线”到规范发布:一次私教咨询实录
自动化
Byron Loong1 小时前
【调试】Dump 文件分析的完整流程
windows
资源分享助手3 小时前
AutoJS Pro9.3最新文档详解与入门教程
自动化
mxwin3 小时前
unity shader中 ddx ddy是什么
unity·游戏引擎·shader
King's King3 小时前
自动化立体仓库系统项目施工要点
运维·自动化
Geoking.3 小时前
VSCode 安装 Claude Code 插件 + ccswitch 配置 DeepSeek API 完整教程(Windows 新手向)
ide·windows·vscode
潘达斯奈基~4 小时前
Windows 下 Claude Code使用 Agent Teams 配置教程
windows
精益数智小屋4 小时前
设备维护方案核心功能拆解:一套好的设备维护方案如何解决设备突发故障
大数据·运维·网络·数据库·人工智能·面试·自动化
Agent产品评测局4 小时前
设备运维自动化预警系统,从0到1落地实操方法:2026企业级架构与智能体选型全指南
运维·人工智能·ai·chatgpt·架构·自动化