Unity自动化打包注意事项

问题描述

使用Unity手册上介绍的程序启动参数,在不打开Unity Editor界面的情况下自动执行C#代码,可以实现自动打包。如果是专门打包iOS包的话,一切OK。但是一旦在Android与iOS之间切换,就会发现iOS的PostProcessBuild标记的后处理代码没有执行,造成打包流程出错。

解决方案

出现该问题的原因是iOS平台特定代码通常是使用#if UNITY_IOS的宏定义包裹。如果项目之前是非iOS平台,使用命令行方式启动Unity直接运行打包方法,那么其中的iOS平台相关代码都是不存在的。

正确的做法是首先切换到构建目标平台,待相关Editor脚本都生效后,再执行构建操作。

同样的道理,在构建方法里调用Unity提供的切换平台方法是没有意义的。C#代码不可能执行到一半,重新编译并加载后还能从中断处继续执行。

对于命令行方式实现的自动打包方案来说,需要添加 -buildTarget <name> 参数。该参数的生效是比 -executeMethod <ClassName.MethodName> 更早一些。所以可以实现先切换到目录平台,所有脚本都正确后再执行给定的静态方法。

下面是一个命令行调用Unity的例子,以供参考:

/Applications/Unity/Unity.app/Contents/MacOS/Unity -buildTarget iOS -batchmode -projectPath \"$PWD/unity/open3d\" -executeMethod Build.DoBuildIOS -quit -logFile

参考

Unity Manual 关于命令行方式启动Unity的介绍,Command line arguments,https://docs.unity3d.com/Manual/CommandLineArguments.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值