1)如何判断设施是否反对64位利用
2)真机加载Timeline报错
3)被动触发Shader编译报错
4)Lens Flare(SRP)导致摄像机重叠后显示UGUI生效


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

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

Script

Q:新的处理器对32位利用反对将越来越少,思考出包的时候只出64位的包,想提前统计下。当初我用的办法是System.Environment.Is64BitProcess来判断的,后果可能不精确,例如Kirin 980取到的后果就是false。

请问有没有其余路径或者接口能够获取呢?

A:参考以下代码:

if(IntPtr.Size == 8)//64else if if(IntPtr.Size == 4)//32

感激萧小俊@UWA问答社区提供了答复

Timeline

Q:如下图所示,这个预制体上有带一个Timeline,加载AssetBundle包的时候报错,尽管报错了然而理论游戏中又齐全没有影响,什么性能都失常的,请问是为什么?

Unity版本:2020.3.1

A:以前也遇到过,退出link文件到Assets目录就好了。

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

Shader

Q:以后版本下,Unity会在输入AssetBundle或者BuildPlayer等行为下,才会编译对应平台的Shader,并触发编译报错显示。然而这个编译报错的体现很奇怪,一部分会只显示在Shader Inspector上,另一部分尽管显示在Console中,然而依然会在刷新后被革除。

当初想找到一个办法,能被动触发编译并且将所有相应的谬误都收集到Log或者其余模式的文件中。以后思考过将所有Shader做AssetBundle编译,而后截取ErrorMessage,但还是遇到之前提到的问题,仅仅显示在Shader Inspector的局部。

不晓得有没有敌人有解决方案?

A1:用ShaderUtil.GetShaderMessages(shader)这个办法能够拿到Inspector上的谬误。

感激范世青@UWA问答社区提供了答复

A2:批准楼上,亲测无效:

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

Rendering

Q:Lens Flare(SRP)导致摄像机重叠后显示UGUI生效,Unity 2021.3.8应用新个性URP管线下的Lens Flare。

因为咱们的是太空我的项目,Lens Flare对成果晋升很大,所以降级到2021应用最新的炫光性能。然而加了后发现FGUI的重叠摄像机画面无奈显示了,不单单是FGUI,UGUI应用独自摄像机渲染模式也是不能显示。

工程链接见原问答。

A:测试了一下,如果是敞开了MSAA,UGUI就能够失常显示了,但奇怪的是FrameDebugger外面明明有UI DrawCall的,然而就是不显示。<br/>

从Renderdoc外面看到开了MSAA的时候Clear Attachment的时候会报错,导致后续的UI DrawCall渲染不失效,不开MSAA的时候是不会报错的,报错如下图:

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

封面图来源于网络


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

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