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

相关推荐
WarPigs1 小时前
Unity性能优化笔记
笔记·unity·游戏引擎
CoderIsArt2 小时前
C#中的CLR属性、依赖属性与附加属性
c#
集成显卡3 小时前
PlayWright | 初识微软出品的 WEB 应用自动化测试框架
前端·chrome·测试工具·microsoft·自动化·edge浏览器
zmm04203 小时前
Could not get unknown property ‘mUser‘ for Credentials [username: null]
jenkins·gradle
b***25114 小时前
动力电池点焊机:驱动电池焊接高效与可靠的核心力量|比斯特自动化
人工智能·科技·自动化
沉到海底去吧Go4 小时前
【行驶证识别成表格】批量OCR行驶证识别与Excel自动化处理系统,行驶证扫描件和照片图片识别后保存为Excel表格,基于QT和华为ocr识别的实现教程
自动化·ocr·excel·行驶证识别·行驶证识别表格·批量行驶证读取表格
程序猿小D5 小时前
第16节 Node.js 文件系统
linux·服务器·前端·node.js·编辑器·vim
luojiaao5 小时前
【Python工具开发】k3q_arxml 简单但是非常好用的arxml编辑器,可以称为arxml杀手包
开发语言·python·编辑器
IGP96 小时前
20250606-C#知识:委托和事件
开发语言·c#
Iamccc13_6 小时前
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
人工智能·数据分析·自动化