Unity Editor 脚本,用于在构建前自动递增各平台的构建号码。此插件实现了 IPreprocessBuildWithReport 接口,会在每次构建前自动运行。
- 自动构建号递增:在每次构建前自动为目标平台递增构建号
- 多平台支持:支持 Windows、macOS、Linux、iOS、Android、WebGL、tvOS、WSA 等平台
- 运行时访问:创建
BuildScriptableObject资源文件,可在运行时访问当前构建号 - 零配置:放入项目后即可自动工作,无需手动配置
| 平台 | 构建号存储位置 |
|---|---|
| Windows/Linux/macOS | PlayerSettings.macOS.buildNumber |
| iOS | PlayerSettings.iOS.buildNumber |
| Android | PlayerSettings.Android.bundleVersionCode |
| WSA (UWP) | PlayerSettings.WSA.packageVersion.Build |
| tvOS | PlayerSettings.tvOS.buildNumber |
| WebGL | 存储在 BuildScriptableObject 中 |
- 将
Editor/BuildIncrementor.cs复制到你的 Unity 项目的Assets/Editor/文件夹中 - 如果
Assets/Editor/文件夹不存在,请先创建它 - Unity 会自动编译脚本,无需其他配置
脚本会在每次构建时自动运行,无需手动操作:
- 在 Unity 中选择 File > Build Settings
- 选择目标平台并点击 Build 或 Build and Run
- 构建号会在构建开始前自动递增
脚本会创建一个 Assets/Resources/Build.asset 文件来存储构建号,你可以在运行时访问:
// 注意:你需要创建 BuildScriptableObject 类来匹配脚本中的使用
BuildScriptableObject buildInfo = Resources.Load<BuildScriptableObject>("Build");
if (buildInfo != null)
{
Debug.Log("当前构建号: " + buildInfo.BuildNumber);
}当前脚本引用了 BuildScriptableObject 类,但该类未包含在此仓库中。你需要创建这个类:
// 建议放在 Assets/Scripts/ 目录下
using UnityEngine;
[CreateAssetMenu(fileName = "Build", menuName = "Build/Build Info")]
public class BuildScriptableObject : ScriptableObject
{
[SerializeField] private string buildNumber = "1";
public string BuildNumber
{
get => buildNumber;
set => buildNumber = value;
}
}- 构建前触发:实现
IPreprocessBuildWithReport接口,在构建开始前自动执行 - 平台检测:根据构建目标平台选择相应的构建号存储位置
- 号码递增:将当前构建号解析为整数,加1后更新
- 资源创建:在
Assets/Resources/Build.asset中保存构建信息供运行时访问 - 自动保存:标记资源为已修改并保存到项目中
Assets/
├── Editor/
│ └── BuildIncrementor.cs # 构建号递增脚本
├── Resources/
│ └── Build.asset # 自动生成的构建信息资源
└── Scripts/
└── BuildScriptableObject.cs # 构建信息数据类 (需要创建)
- 脚本会自动创建
Assets/Resources文件夹(如果不存在) - Android 平台使用
bundleVersionCode(整数)而非字符串 - WSA 平台使用
System.Version类型,只递增 Build 部分 - 某些平台的构建号设置被注释掉了(PS4、Xbox One、Switch),可根据需要启用
此项目使用 MIT 许可证。
欢迎提交 Issue 和 Pull Request 来改进此插件。