如何通过C#脚本创建以Unity构建版本命名的构建目标文件夹?
Unity自动按版本号创建构建目录方案
完全可以实现,直接通过Unity的Editor脚本就能搞定,不用手动创建文件夹。核心思路是读取当前项目的版本号,自动生成对应路径并创建文件夹,最后把构建产物输出到这个目录。
具体实现步骤
- 在你的Unity项目中创建
Editor文件夹(如果没有的话),所有Editor脚本必须放在这个目录下才会生效。 - 在
Editor文件夹里新建一个C#脚本,比如命名为AutoBuildWithVersionFolder.cs,粘贴以下代码:
using UnityEditor; using UnityEngine; using System.IO; using System.Linq; public class AutoBuildWithVersionFolder { [MenuItem("Build/Auto Build With Version Folder")] public static void BuildGame() { // 获取当前项目的版本号 string version = PlayerSettings.bundleVersion; // 定义基础输出路径,替换成你自己的目标根路径 string basePath = @"C:\Folder\Folder\SaveDestination"; // 拼接成带版本号的完整路径 string targetPath = Path.Combine(basePath, $"V{version}"); // 如果目标路径不存在,自动创建文件夹 if (!Directory.Exists(targetPath)) { Directory.CreateDirectory(targetPath); } // 配置构建参数 BuildPlayerOptions buildOptions = new BuildPlayerOptions(); // 获取当前启用的场景列表(可手动指定场景路径) buildOptions.scenes = EditorBuildSettings.scenes.Where(scene => scene.enabled).Select(scene => scene.path).ToArray(); // 设置输出路径(根据目标平台调整后缀,比如Mac是.app,Android是.apk) buildOptions.locationPathName = Path.Combine(targetPath, "Game.exe"); // 设置构建目标平台,这里以Windows64为例,可替换为其他平台 buildOptions.target = BuildTarget.StandaloneWindows64; buildOptions.options = BuildOptions.None; // 执行构建 BuildReport report = BuildPipeline.BuildPlayer(buildOptions); BuildSummary summary = report.summary; // 输出构建结果日志 if (summary.result == BuildResult.Succeeded) { Debug.Log($"构建成功!产物已保存到:{targetPath}"); } else { Debug.LogError($"构建失败!错误数:{summary.totalErrors}"); } } }
代码关键说明
PlayerSettings.bundleVersion:直接读取你在Project Settings > Player中设置的版本号,无需手动输入。Directory.CreateDirectory:自动创建目标路径,哪怕中间层级的父目录不存在也会一并生成。BuildPlayerOptions:可根据项目需求调整参数,比如切换目标平台、指定特定构建场景、添加构建选项(如开发模式)。
使用方法
在Unity编辑器顶部菜单栏,点击Build > Auto Build With Version Folder,就能自动完成版本号文件夹创建+构建的全流程,产物会自动存入C:\Folder\Folder\SaveDestination\Vx.x目录下。
额外提示
- 如果你需要在构建前自动更新版本号,可以把版本号递增逻辑加到脚本里,比如读取当前版本号拆分后加1,再赋值给
PlayerSettings.bundleVersion。 - 确保Unity有目标路径的读写权限,避免因权限问题导致构建失败。
- 不同平台的输出文件名后缀要对应调整,比如Android用
.apk,iOS用.ipa(iOS构建需额外配置证书和打包环境)。
内容的提问来源于stack exchange,提问作者Domenic
相关产品推荐
相关产品推荐

