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 项目的自动化打包,并通过命令行传递参数指定版本号等内容。通过统一的工具链,我们提高了项目打包的效率和可控性,使版本管理更加灵活。

相关推荐
苏州邦恩精密13 分钟前
2026江苏GOM三维扫描仪定制厂家找哪家?企业数字化转型视角
人工智能·机器学习·3d·自动化·制造
coolwaterld1 小时前
windows下删文件,找出“到底是谁占用
windows
雪豹阿伟1 小时前
21.Winfrom —— 定时器、日期选择器、进度条、表格、DataTable
c#·上位机·winfrom
z落落2 小时前
C#WinForm控件实战:Panel与单选框动态创建
开发语言·c#
2501_912784082 小时前
Taocarts深度解析:1688自动代采模块的Puppeteer自动化实战
运维·自动化
Dola_Zou2 小时前
边缘智能的“黑暗森林”:工业 AI 模型下沉的资产防护与变现密码
人工智能·安全·自动化·软件工程·软件加密
MXsoft6182 小时前
**断网续传与本地缓存:弱网环境下的监控数据保障方案**
运维·缓存·自动化
LT10157974442 小时前
2026年UI自动化测试平台选型指南:全界面自动化覆盖方案
运维·ui·自动化
曦尧2 小时前
GitHub - addyosmani/agent-skills:面向 AI 编程智能体的生产级工程技能 · GitHub
ai·自动化
csg11073 小时前
PIC16F1947驱动CH376芯片实现SD卡数据存储
单片机·嵌入式硬件·物联网·自动化