关于IL2CPP在Xcode下增量编译

这是第128篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

编译

Q:最近在研究加速打包问题,发现IL2CPP生成代码之后每次Xcode都是全量编译(直接Build而不是Clean+Archive),我参考这里看了下:

https://forum.unity.com/threads/incremental-builds-for-il2cpp.365470

对比了下,如果C#代码没有变化,生成的CPP代码的内容确实不变。但是重新生成貌似会导致文件修改时间变化或别的属性变化,Xcode依然是所有都编译了一遍,这块有什么经验么?

题主:目前准备用UWA群里大佬说的方法绕开:

“打出的Xcode用svn同步到Xcode打包项目下”—Freshair.

我用dnspy看了下,il2cpp.exe直接修改代价有点大,而且不好维护。用BeyondCompare比较了下,发现其实就Preprocessor.h和Native文件夹俩修改时间产生了变化...

感谢钱康来@UWA问答社区分享了该问答,欢迎转至社区交流:

https://answer.uwa4d.com/question/5b90ebbb670c1a61c64d6cd3

UI

Q:我用OnPopulateMesh修改UI的顶点数据,通过Tangent向UGUI的Shader中传递一些数据,C#代码是这样写的:

Shader代码:

Color数据可以正确获取到,但是Tangent始终是0,似乎UGUI没有将Tangent数据传给Shader。请问下是什么原因,还是代码哪里写的有问题?

A:见下图

感谢钱康来@UWA问答社区提供了回答

该问答来自UWA问答社区,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/5b8f6497f8456e3944031084

崩溃

Q:请教一下,我使用VideoPlayer的时候,Android端调用Stop会闪退的,Unity 版本是5.6.1,大家有遇到过吗?该如何处理呢?

A:低版本的Unity上VideoPlayer就是不稳定的,容易崩溃。这点我们和Unity官方的技术支持团队确认过,建议升级Unity版本,最好升到Unity 2017,如果不方便可以升到高版本的Unity 5.6 系列。

感谢吴一帆@UWA问答社区提供了回答

该回答由UWA提供,欢迎大家转至社区进一步交流:

https://answer.uwa4d.com/question/5b91f86ba711f261c1677e16

动画

Q:我想在Animation中无法加入TextMesh.color这个变量,请问该如何实现?需要在动画中修改TextMesh的a值, 但是在mat中修改没法合批。

UWA:经排查发现这个问题是由无法静态合批所致, 提示“Objects are affected by different forward lights”。经进一步测试,发现差异点为在游戏中,场景部件受到点光源照射, ForwardAdd打断合批过程, 如果把点光源屏蔽掉, 能够正常合批。

该回答由UWA提供,欢迎大家转至社区进一步交流:

https://answer.uwa4d.com/question/5b8f431cf8456e3944031080

脚本

Q:我用GetComponents的API获取GameObject的组件时,有时候获取的顺序不一致,请问这个顺序是由什么决定的呢?

A:之前没注意过这个问题,但是感觉挺有意思的,所以使用GetComponents和order两个关键词做了一下检索:

https://answers.unity.com/questions/1293957/reliable-order-of-components-using-getcomponents.html

https://answers.unity.com/questions/556932/does-getcomponents-return-the-components-in-the-or.html

https://stackoverflow.com/questions/42375242/unity-getcomponentsinchildrent-return-order

大意应该是——顺序应该是和你在Inspector里看到的顺序一致,但是因为这个顺序是undoc的,所以Unity什么时候改了实现导致顺序变化了并不会知会你。

不知道题主在什么情况下获取的顺序不一致,这个不一致是否是完全相同的状态多次获取结果不一样?总之,我的感觉还是不要让顺序可以影响游戏逻辑为好,毕竟这东西即使当前测试稳定,以后的版本谁知道呢。

感谢贾伟昊@UWA问答社区提供了回答

UWA:用GetComponents获取的顺序就是Inspector中Component的顺序。如果你在Editor中改变了这个顺序,那么用这个函数API获取的就随之改变了。

该问答来自UWA问答社区,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/5b8c0a9f339d267d357c6eb6

今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

图片来自网络

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180910A1LRQU00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券