1)Timeline技能编辑器如何提取关键帧信息
2)Mesh资源开启R/W内存的翻倍问题
3)UI的Animator动画对Canvas.SendWillRenderCanvas()耗时影响
4)对Shader变体的了解


这是第281篇UWA技术常识分享的推送。明天咱们持续为大家精选了若干和开发、优化相干的问题,倡议浏览工夫10分钟,认真读完必有播种。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Script

Q:最近在用Unity做一个技能编辑器,让策动能够在Timeline编辑器里编辑技能动画、施法特效、受击动画、受击特效和播放声音等等。编辑这些都没什么问题,我想依据编辑好的Timeline导出一系列行为节点,在Editor的环境下导出成配置(蕴含所有行为节点)。当初我不分明怎么获取Timeline里第m帧开始某动画x,第n帧完结这些行为。同时怎么能给动画打上对应Tag?

A:Timeline的组成如下图:

每个Track对应一个TrackAsset其实就是一个PlayableAsset,整个Timeline也是一个TimelineAsset,外面存了所有Track的数据:

对于每个Clip的开始和完结工夫在TimelineClip中能够获取:

感激羽飞@UWA问答社区提供了答复

Mesh

Q:为什么Profiler中显示开启网格的Read/Write没有使其内存翻倍,而仅仅是回升了一点?

A:如果是FBX中的网格资源,则该网格资源很有可能除了本身网格的顶点数据外,还带有动画和骨骼信息。而当开启FBX的Read/Write时,仅会使网格资源本身的内存翻倍,而动画和骨骼信息不会,且Profiler并不能将他们离开统计,从而产生了整体没有翻倍的景象,如图。

开启Read/Write:

没开Read/Write:

这一点能够通过将FBX设置中Animation Type设置为None、勾销Import Animation勾选、勾销Import Materials勾选证实。此时Profiler中该网格资源内存显著降落,并根本合乎开启Read/Write前后内存翻倍了。

值得一提的是,在较新版本的Unity中(图截自2020.3),选中网格资源是能够看到其内存的实践大小和具体组成部分的。

感激Faust@UWA问答社区提供了答复

UGUI

Q:对UGUI增加Animator动画会造成UI更新耗时吗?如果Animator组件处于Active状态但没有进行Loop会有继续耗时吗?

A:在Unity 2018.4版本中对于这个问题试验如下:
步骤1,场景中为一个UI增加批改Scale的动画,并复制1000个;
步骤2,增加了其Position和Color属性的动画;
步骤3,批改了所在Canvas的Render Mode为Overlay模式和Camera模式;
步骤4,批改了所在Canvas的Pixel Perfect为关上。

只进行1的状况下无论动画是否Loop,Canvas.SendWillRenderCanvas()都只会在刚开始时有一段高耗时。

而批改2之后的所有状况下,开启Loop时Canvas.SendWillRenderCanvas()始终具备高耗时。但敞开Loop后,播放完一次动画后Canvas.SendWillRenderCanvas()的耗时就始终靠近于0了,如图:

而此时动画零碎自身的Animator.Update()耗时依然很高,如图:

总的来说,从2018.4上的这次试验来看,现版本的UGUI不会被不在播放状态的Animator影响而造成Canvas.SendWillRenderCanvas()耗时。

感激Faust@UWA问答社区提供了答复

Shader

Q:除了不倡议应用Standard Shader外,还有其余的Unity默认的Shader不举荐应用吗?比方官网的Universal Render Pipeline/Particles/Unlit有6个变体,其中也用到了雾效的计算。然而咱们我的项目中没有用到雾效,而且这个Shader用得十分多,这类状况是否有必要本人弄一个简洁版?

A:对于Shader变体数量次要影响的是Shader的内存(尽管变体数量和内存并不是齐全的线性关系),如下PPS中的Uber变体数为3.74K很高:

次要是因为有很多multi_compile的Keywords,倡议手动删除一些不必的(或应用shader_feature代替),能够大大降低变体数量:

以上示例就是简略粗犷的优化对内存影响较大的Shader,当然最好是通过SVC对我的项目中所有Shader的所有变体进行治理,但工作量绝对会大很多。

感激羽飞@UWA问答社区提供了答复

封面图来源于
Animation Rigging: Advanced Setups
展现了Unity动画索具包的高级设置和用例。


明天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题兴许都只是冰山一角,咱们早已在UWA问答网站上筹备了更多的技术话题等你一起来摸索和分享。欢送酷爱提高的你退出,兴许你的办法恰能解他人的当务之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官网技术博客:blog.uwa4d.com
官网问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官网技术QQ群:793972859(原群已满员)