Unity3d C#实现打包自动更新软件版本号且UGUI同步显示功能
2023-09-27 14:27:29 时间
前言
如题的功能可以实现免去每次打包得手动更新版本号的痛点,只需要正常进行打包流程即可实现版本号的自动升级。
效果
效果如图:
思路
我们假定软件中版本号按“Ver.yyyy/MM/dd-01”格式进行升级,Ver.为固定的显示文字,yyyy/MM/dd是版本发布的日期(日期版本号),-01是数字版本号(同一天的多次打包会依次+1)。每次打包前先对该版本号进行解析,如果是同一日期则升级数字版本号,不然会更新日期版本号。更新完日期直接设置在bundleVersion。程序运行时显示版本号的Text进行读取并展示。
流程图:
实现
我们新建一个空工程,利用UnityEditor.Build;和UnityEditor.Build.Reporting;中的打包前接口OnPreprocessBuild实现版本号自动升级功能。作者的功能在== Unity3d 2020。3.12f1c1==实现。
搭建UI
测试场景只需要用的Text:
版本号自动升级
该功能就是在OnPreprocessBuild函数中升级版本号。:
string GetVerNum(string str)
{
if (!string.IsNullOrEmpty(str))
{
string[] arr = str.Split('-');
if (arr.Length > 1 && "Ver."+DateTime.Now.ToString(VerDateFm) == arr[0])
{
int num;
if (int.TryParse(arr[1], out num))
return "Ver." + DateTime.Now.ToString(VerDateFm) + "-" +
(((num + 1)<10)?(num + 1).ToString("D2"): (num + 1).ToString());
}
}
return "Ver." + DateTime.Now.ToString(VerDateFm) + "-01";
}
其中VerDateFm 是日期的格式(“yyyy/MM/dd”)。
同步版本号
vertext.text = Application.version;
vertext就是显示版本号的Text。
打包&运行
打包三次的截图:
三次的数字版号跟着升级了
第三次运行图:
第三次版本号为:Ver.2022/02/16-03