
Jenkins自动打包时,总会打包失败,报错 Fatal Error! GetManagerFromContext: pointer to object of manager 'MonoManager' is NULL (table index 5)。怀疑是Unity IAP中的UDP低版本的一个bug导致的,以下介绍临时解决步骤和自测过的最终解决步骤。
2~5步骤可以用断网来解决,但一般自动打包的打包机是在远程,断网再进行操作会比较麻烦
1.1 包括菜单栏右下角的UnityHub都要关闭
2.1 菜单栏网络点击右键-打开"网络和 Internet"设置
2.2 点击Windows防火墙
2.3 点击高级设置
3.1 点击左侧入站规则,再点击右侧新建规则
3.2 点击下一步
3.3 浏览选择Unity安装路径下的Unity.exe文件,点击下一步
3.4 先选择阻止连接,再点击下一步
3.5 点击下一步
3.6 输入名称,点击完成
3.7 UnityHub.exe同理,再执行一次3.1~3.6步骤
4.1 点击左侧出站规则,再点击右侧新建规则
4.2~4.7 设置出站规则,步骤与3.2~3.7一致,最后保证四个规则都设置好
6.1 此时启动UnityHub会提示服务器无响应,这说明防火墙规则拦截成功了,成功使Unity和UnityHub没有了网络连接
6.2 确认打开Unity工程后,把防火墙高级设置里的四个规则禁用,此时比较关键,此时不要点击打开UnityHub
6.3 在Unity工程里点击菜单栏的File,再点击Open Project即可解决这个问题,再次打包就不会报这个错了
在Unity工程的AssetsPluginsUDP文件夹,将此文件夹删除
修改项目根目录的Packages下的manifest.json文件,在dependencies里新增一条
"com.unity.purchasing.udp": "2.0.0",
版本号最好与Unity IAP的版本号保持一致,比如Unity IAP的版本号为2.0.6,就只能选择2.0.0版本的UDP
保存进入Unity,会自动下载导入UDP插件,成功后可以在PackageManager里查看