1)RenderTexture 导致 UI 花屏的问题
2)Unity 2019 ToLua 导出 ParticleSystem 异样
3)UWA GOT 在安卓 10 上的截图问题
4)Addressables.CheckForCatalogUpdates 和 Addressables.GetDownloadSizeAsync 的问题
5)用 RenderDoc 抓不到华为手机的帧
这是第 241 篇 UWA 技术常识分享的推送。明天咱们持续为大家精选了若干和开发、优化相干的问题,倡议浏览工夫 10 分钟,认真读完必有播种。
UWA 问答社区:answer.uwa4d.com
UWA QQ 群 2:793972859(原群已满员)
Rendering
Q:UI 花屏该怎么查?呈现绿色,也有紫色在闪动。如下图所示,彩色背景还有紫色在闪动,截图截不了。只有在真机下才呈现,模拟器上是没有的。
这彩色背景是一个 RenderTexture 的 Blur 成果,SRP 实现的,应用的设施是小米 K30。
A1:倡议应用 FrameDebugger 定位一下是哪些 Shader 执行呈现的问题,呈现问题的很有可能是该 Shader 的渲染执行程序有问题,看看 RenderPassEvent 设置是否正确。
感激李星 @UWA 问答社区提供了答复
A2:问题查出来了,用了 RenderTexture.GetTemporary,depthBuffer 参数传了 16 导致的,0 不会。
感激题主 NG 週 @UWA 问答社区提供了答复
Lua
Q:Unity 2019 Tolua 导出 ParticleSystem 异样,如图:
因为这里 Type 为 null,导致 ParticleSystem 无奈导出。
A:用 1.0.8.595 解决 Unity 运行库 [out] 标记非 out 参数问题,去官网更新一下。
https://github.com/topameng/tolua/commits
topameng committed on 19 Jun 2020
感激南神 @UWA 问答社区提供了答复
Android
Q:UWA 在安卓 10 上不能失常应用截图性能,曾经依照文档配置了 Manifest,如下图:
A:这个解决方案是针对 UWA GOT Online 打包的 Write 权限的问题的,并不能解决截图的问题。目前在安卓 10 零碎的真机上,只有 APK 设置的 TargetSDKVersion<=28 时能力截图。TargetSDKVersion 设置为 <=28(28 为安卓 9),出的 APK 仍旧能在安卓 10 手机上跑的。
感激 Xuan@UWA 问答社区提供了答复
Addressable
Q:请问大佬,为什么 Addressables.CheckForCatalogUpdates 和 Addressables.GetDownloadSizeAsync 永远返回 AsyncOperationStatus.Succeeded?
我 http 服务器都没开,它还是返回胜利。原本是我是通过 Addressables.CheckForCatalogUpdates 和 Addressables.GetDownloadSizeAsync 来判断是否须要更新资源,然而 http 服务器都没开,仍然返回胜利,检测为不须要更新了。请问如何解决?
Addressable 版本 1.16.15
Unity 2018.4.14f
A1:翻了代码,最初发现 CheckCatalogsOperation 中的 Execute 办法里间接 Complete(result, true, null); 这样返回的,所以永远都是胜利的。
感激题主 wu@UWA 问答社区提供了答复
A2:Addressables.CheckForCatalogUpdates 是通过返回一个“catalog ids”的列表来判断是否有更新的,就判断这个列表有没有就能够了。
服务器没开天然是不须要更新,也没法更新。GetDownloadSizeAsync 则是通过最新的 Catalog 内 AssetBundle 的 hash 和曾经下载的 AssetBundle 的 hash 比照来判断是否须要下载,须要下载则把 Size 累计上。既然 catalog 没有被更新掉,天然也就没它什么事件了。
怎么解决就看业务层想怎么设计了。比方:
更新服务器开不开都心愿进游戏,那么就按当初 CheckForCatalogUpdates 返回列表为空就当成不须要更新,持续跑就行了。如果必须在更新服务在线的状况下走,那么就由内部程序来判断服务器是否活着,而后再进到游戏更新逻辑。
感激黄程 @UWA 问答社区提供了答复
Rendering
Q:最近遇到渲染深度不正确的问题。在骁龙的机型上渲染进去是错的(和编辑器不统一),在华为的机型和 iOS 上渲染进去是正确的。于是想用 RenderDoc 抓帧比照下两边的区别,看看到底哪一步不一样。
后果发现同样的包,在骁龙的机型上能够抓到帧(大概几十 MB 数据的.rdc 文件),在华为的机型上抓进去是黑的(只有 3MB 左右数据的.rdc 文件)。
去 RenderDoc 的 Issue 里翻了下,找到一条靠近的,看作者的意思大略就是这问题没救。请问有没有人遇到过相似的问题,或者给一些倡议。
https://github.com/baldurk/renderdoc/issues/2106
测试环境:
Unity 2018.4/Unity 2019.4
OpenGL ES3(如果用 Vulkan,在华为手机上也能够失常抓帧)
1 加手机抓帧后果:
华为手机抓帧后果:
A:起初发现某个用 Mali Gpu 的 OPPO 手机能够抓帧,就没用华为手机持续查这问题。
不过查资料过程中发现华为有一个本人改版的 RenderDoc,能够用来在华为手机上抓帧:
https://developer.huawei.com/consumer/cn/forum/topic/0203337632069160300
感激题主 deviljz@UWA 问答社区提供了答复
明天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题兴许都只是冰山一角,咱们早已在 UWA 问答网站上筹备了更多的技术话题等你一起来摸索和分享。欢送酷爱提高的你退出,兴许你的办法恰能解他人的当务之急;而他山之“石”,也能攻你之“玉”。
官网:www.uwa4d.com
官网技术博客:blog.uwa4d.com
官网问答社区:answer.uwa4d.com
UWA 学堂:edu.uwa4d.com
官网技术 QQ 群:793972859(原群已满员)