如何判断设备是否支持64位应用

如何判断设备是否支持64位应用

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)
//64
else if if(IntPtr.Size == 4)
//32

感谢萧小俊@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/62f5cfc8343a54268c841b28


Timeline

Q:如下图所示,这个预制体上有带一个Timeline,加载AssetBundle包的时候报错,虽然报错了但是实际游戏中又完全没有影响,什么功能都正常的,请问是为什么?

Unity版本:2020.3.1

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

感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6306f96c6d82e96d844a98bf


Shader

Q:当前版本下,Unity会在输出AssetBundle或者BuildPlayer等行为下,才会编译对应平台的Shader,并触发编译报错显示。但是这个编译报错的表现很奇怪,一部分会只显示在Shader Inspector上,另一部分虽然显示在Console中,但是仍然会在刷新后被清除。

现在想找到一个方法,能主动触发编译并且将所有相应的错误都收集到Log或者其他形式的文件中。当前考虑过将所有Shader做AssetBundle编译,然后截取ErrorMessage,但还是遇到之前提到的问题,仅仅显示在Shader Inspector的部分。

不知道有没有朋友有解决方案?

A1:用ShaderUtil.GetShaderMessages(shader)这个方法可以拿到Inspector上的错误。

感谢范世青@UWA问答社区提供了回答

A2:同意楼上,亲测有效:

感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/63117db152100855894dfe97


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的,但是就是不显示。

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

感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/62fef7b72abe7a297c96c657

封面图来源于网络


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

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