关于IL2CPP在Xcode下增量编译

栏目: C++ · 发布时间: 5年前

内容简介:这是第128篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。UWA 问答社区:answer.uwa4d.comUWA QQ群:465082844(仅限技术交流)

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

UWA 问答社区:answer.uwa4d.com

UWA QQ群:465082844(仅限技术交流)

编译

Q1:最近在研究加速打包问题,发现IL2CPP生成代码之后每次Xcode都是全量编译(直接Build而不是Clean+Archive),我参考 这里 看了下,并对比了下,如果C#代码没有变化,生成的CPP代码的内容确实不变。但是重新生成貌似会导致文件修改时间变化或别的属性变化,Xcode依然是所有都编译了一遍,这块有什么经验么?

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

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

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

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

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

UI

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

public class MyRawImage : RawImage

{

protected override void OnPopulateMesh(VertexHelper vh)

{

base.OnPopulateMesh(vh);

UIVertex vert = new UIVertex();
    int vertCount = vh.currentVertCount;
    for(int i = 0; i <vertCount; ++i)
    {
        vh.PopulateUIVertex(ref vert, i);
        vert.tangent = new Vector4(1,0,0,1); // 通过tangent传递数据 -----------------
        vert.color = new Color(1,0,0,1); // 通过color传递数据 -----------------
        vh.SetUIVertex(vert, i);
    }
}

}

Shader代码:

struct appdata_t

{

float4 vertex : POSITION;

float4 color : COLOR; // color 数据 -----------------

float2 texcoord : TEXCOORD0;

float4 tangent : TANGENT; // tangent 数据 -----------------

UNITY_VERTEX_INPUT_INSTANCE_ID

};

struct v2f

{

float4 vertex : SV_POSITION;

fixed4 color : COLOR; // color 数据 -----------------

float2 texcoord : TEXCOORD0;

float4 worldPosition : TEXCOORD1;

float4 tangent : TEXCOORD2; // tangent 数据 -----------------

UNITY_VERTEX_OUTPUT_STEREO

};

v2f vert(appdata_t v)

{

v2f OUT;

UNITY_SETUP_INSTANCE_ID(v);

UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);

OUT.worldPosition = v.vertex;

OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);

OUT.texcoord = v.texcoord;
OUT.tangent = v.tangent; // tangent 数据 -----------------

OUT.color = v.color; // color 数据 -----------------
return OUT;

}

fixed4 frag(v2f IN) : SV_Target

{

return IN.color; // color 数据 -----------------

return IN.tangent; // tangent 数据 -----------------

}

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

见下图:

关于IL2CPP在Xcode下增量编译

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

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

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

崩溃

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

** 关于IL2CPP在Xcode下增量编译

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

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

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

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

动画

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

关于IL2CPP在Xcode下增量编译

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

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

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

脚本

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

之前没注意过这个问题,但是感觉挺有意思的,所以使用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问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com

官方技术博客:blog.uwa4d.com

官方问答社区:answer.uwa4d.com

官方技术QQ群:465082844(仅限技术交流)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Letting Go of the Words

Letting Go of the Words

Janice (Ginny) Redish / Morgan Kaufmann / 2007-06-11 / USD 49.95

"Redish has done her homework and created a thorough overview of the issues in writing for the Web. Ironically, I must recommend that you read her every word so that you can find out why your customer......一起来看看 《Letting Go of the Words》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具