unity自动构建

Jenkins/Hudson

Jenkins的前身是Hudson(Sun开发),2010年从Hudson分支出来。由于Sun被Oracle收购,Oracle声称拥有Hudson的商标所有权,Hudson社区被迫这样做的。分支出来的Jenkins将继续走open source道路,而Hudson可能会用于商业用途,二者都在继续开发中。

持续集成

持续集成总是跟敏捷开发什么的搞在一起,显得很高大上,其实它就是一个后台服务+web管理配置页面,它可以自动化(定时或事件触发)地执行某项任务,比如编译程序、打包程序、自动发布等等。这个在web开发或者大项目的多人合作上面很有帮助。只要配置好了,然后可以个人做个人的,Jenkins会自动的从svn或git上面获取最新的代码,整合编译发布。相当于主程的很大一部分工作(发布版本)都由Jenkins自动完成了。因为手游项目比较小,所以Jenkins的意义不是非常大,但是通过Jenkins依然可以自动化的处理资源、整合发布版本、自动化处理渠道包等等。

Hudson截图

我们目前项目中使用的Hudson工作截图

image

阅读资料

InfoQ Hudson近况:项目已正式更名为Jenkins

雨松 Unity3D研究院之Jenkins的使用(七十八)

优快云 持续集成环境Jenkins的搭建和使用

David Liu Unity3d+Jenkins 自动编译iOS、Android版本

关于使用jenkins + unity +Xcode 来进行自动打包的处理。

Unity3dBuilder Plugin https://wiki.jenkins-ci.org/display/JENKINS/Unity3dBuilder+Plugin

<think>首先,用户的问题是关于Unity自动构建的:他们想知道在Unity自动构建时,是否能指定版本号,而不使用工程设置的版本号。 关键点: - 用户提到“不使用工程设置的版本号而指定版本号”,意思是希望在构建过程中覆盖工程中设置的版本号。 - 我需要参考提供的引用来回答。 回顾引用: - 引用[1]:讨论了Unity自动构建,包括命令行参数启动、自动检查等。它提到“支持命令行参数启动”,但没有具体提到版本号指定。 - 引用[2]:关于使用GameCI进行Unity自动构建和测试,但焦点在测试和CI,没有提到版本号。 - 引用[3]:关于Unity导出Xcode工程的文件结构,没有直接相关到版本号指定。 引用[1]中提到“支持命令行参数启动”和“识别命令行输入的不同参数”,这暗示着可以通过命令行参数来定制构建过程。所以,我可以推断,通过命令行参数,可能可以覆盖版本号。 我的知识: - Unity支持通过命令行参数来执行构建脚本。 - 在Unity中,版本号通常在Player Settings中设置。但在构建脚本中,可以通过UnityEditor命名空间来修改这些设置。 - 例如,在构建脚本中,可以使用PlayerSettings.bundleVersion来设置版本号。 因此,回答应该是:是的,可以通过命令行参数或在构建脚本中动态设置版本号。 结构回答: - 系统指令要求: - 使用$...$和$$...$$格式。 - 中文回答。 - 生成相关问题(在最后添加§§相关问题§§)。 - 引用的末尾添加引用标识。 - 保持结构清晰。 回答结构: 1. 先确认问题:是的,Unity自动构建时可以指定版本号而不使用工程设置的版本号。 2. 解释如何实现:通过命令行参数或自定义构建脚本。 3. 参考引用:引用[1]提到命令行参数支持,所以可以添加引用。 4. 提供示例:给一个简单的脚本示例。 5. 确保真实可靠:基于Unity文档或常见实践。 6. 生成相关问题:在最后添加。 示例脚本: - 使用C#脚本在Unity Editor中执行构建。 - 例如,创建一个BuildScript.cs,其中修改PlayerSettings.bundleVersion。 命令行示例: - Unity命令行:Unity -batchmode -quit -executeMethod BuildScript.Build -version "1.0.0" 在脚本中: ```csharp using UnityEditor; using System; public class BuildScript { public static void Build() { // Set version from command line argument string[] args = Environment.GetCommandLineArgs(); string version = GetArgument("-version"); if (!string.IsNullOrEmpty(version)) { PlayerSettings.bundleVersion = version; } // Proceed with build BuildPipeline.BuildPlayer(...); } private static string GetArgument(string name) { var args = Environment.GetCommandLineArgs(); for (int i = 0; i < args.Length; i++) { if (args[i] == name && i + 1 < args.Length) { return args[i + 1]; } } return null; } } ``` 添加引用: - 在适当的地方添加[^1]。 相关问题: - 如"§§相关问题§§"部分。 最终回答: - 开头:直接回答问题。 - 中间:解释方法。 - 结束:相关问题。 </think> 是的,Unity自动构建时可以指定版本号而不使用工程设置的版本号。这主要通过命令行参数或自定义构建脚本实现,覆盖Unity Editor中PlayerSettings的默认配置。以下是详细解释和实现方法: ### 1. **实现原理** 在Unity自动构建中,可以通过以下方式动态设置版本号: - **命令行参数传递**:启动Unity时,通过命令行参数传入自定义版本号,然后在构建脚本中解析并应用到PlayerSettings。 - **脚本动态修改**:在C#构建脚本中使用`PlayerSettings.bundleVersion`属性修改版本号,无需手动调整工程设置。 这符合引用[1]中提到的“支持命令行参数启动”和“识别命令行输入的不同参数”,允许在构建时灵活定制需求。 ### 2. **具体实现步骤** 以下是一个完整的示例,展示如何在自动构建中指定版本号: ```csharp using UnityEditor; using System; public class BuildScript { public static void Build() { // 从命令行参数获取版本号(例如:-version "1.2.3") string version = GetCommandLineArg("-version"); if (!string.IsNullOrEmpty(version)) { // 动态设置版本号 PlayerSettings.bundleVersion = version; UnityEngine.Debug.Log($"设置版本号为: {version}"); } else { UnityEngine.Debug.Log("使用默认工程版本号"); } // 执行构建(例如构建Android应用) BuildPlayerOptions buildOptions = new BuildPlayerOptions { scenes = new[] { "Assets/Scenes/Main.unity" }, locationPathName = "Build/Android/app.apk", target = BuildTarget.Android, options = BuildOptions.None }; BuildPipeline.BuildPlayer(buildOptions); } // 辅助方法:解析命令行参数 private static string GetCommandLineArg(string name) { string[] args = Environment.GetCommandLineArgs(); for (int i = 0; i < args.Length; i++) { if (args[i] == name && i + 1 < args.Length) { return args[i + 1]; } } return null; } } ``` #### 命令行调用示例: ```bash Unity -batchmode -quit -executeMethod BuildScript.Build -projectPath /path/to/project -version "2.0.0" ``` - `-batchmode`:无界面模式运行Unity。 - `-quit`:构建完成后自动退出。 - `-executeMethod BuildScript.Build`:执行构建脚本中的方法。 - `-version "2.0.0"`:自定义版本号参数(可替换为任意值)。 ### 3. **关键注意事项** - **兼容性**:此方法适用于所有平台(如Android、iOS、Windows)。对于iOS构建,需确保Xcode工程导出后的处理脚本也能处理版本号(引用[3]提到iOS构建涉及Xcode工程修改)[^3]。 - **版本号格式**:版本号需符合平台规范(如iOS的CFBundleVersion格式)。 - **CI/CD集成**:在CI工具(如GitHub Actions)中,可将版本号作为环境变量传入,实现全自动化(引用[2]提到CI工具支持命令行构建)[^2]。 - **错误处理**:建议在脚本中添加异常捕获,避免构建失败(引用[1]强调自动检查的重要性)[^1]。 通过这种方式,您可以在每次构建时灵活指定版本号,无需修改Unity工程设置,提升自动构建的效率和可定制性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值