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

相关推荐
程序员老油条22 分钟前
用 n8n 自建自动化:GitHub Push 后自动部署到服务器
服务器·自动化·github
pt104326 分钟前
思科网络自动化入门课程介绍
运维·网络·自动化
姚青&12 小时前
测试左移体系
python·自动化
weixin_3077791312 小时前
Linux下Nginx故障系统化检查Shell脚本
linux·运维·服务器·nginx·自动化
安当加密030112 小时前
凭据管理自动化:从硬编码密码到动态轮换的DevSecOps实践
自动化·devsecops·凭据管理·密码轮换·硬编码治理
LibraJM13 小时前
一种适合程序员的 Agent 协作方式的实践
c#·copilot·agents
姚青&13 小时前
测试右移体系
自动化
2501_9336707914 小时前
二本通信工程就业前景与岗位分析:CDA数据分析师证书的加持之路
自动化
印度神油915 小时前
Windows Python 打包实战:Nuitka 环境踩坑总结与 CI 自动化构建全指南
windows·python·ci/cd