Addressable卸载AssetBundle失效的疑惑
1)Addressable卸载AssetBundle失效的疑惑
2)模型Meta中的hasExtraRoot参数的作用及其历史原因
3)TMP为什么有多次Delegate.Combine()的GC
4)准备在海外发行游戏,比较常用的身份认证类SDK
这是第331篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。
UWA社区主页:community.uwa4d.com
UWA QQ群:465082844
Addressable
Q:项目开发的版本是UnityWebGL,我有一个初包场景A,一个过渡场景Loading,两个用Addressables打的Bundle场景B与C,都是Remote的。
我在A场景点击按钮,使用SceneManager.LoadScene到Loading,然后用Addressables.LoadSceneAsync加载Bundle场景B,并保存了B场景的句柄Handle。
进入到B场景后,点击按钮跳转到Loading场景,然后拿到保存的B场景句柄Handle,使用Addressables.UnloadSceneAsync与Resources.UnloadUnusedAssets,然后Addressables.LoadSceneAsync加载Bundle场景C,并把原B场景的句柄Handle赋值C场景的句柄。
进入到C场景后,又切换B场景,在Google浏览器F12模式下,第二次加载B场景,网络模块下没显示场景B的Bundle。
给我的感觉是B场景的Bundle在跳转C场景的时候没有被卸载,希望能帮助解答一下这是什么原因。
我查看了源码,Addressables.UnloadSceneAsync的底层确实是调用了AssetBundle.Unload(true);的。
A:Addressable加载过一次的AssetBundle,会下载到本地硬盘缓存,Addressable.UnloadSceneAsync和Resources.UnloadUnusedAssets这两个操作只是会让相关资源从Runtime内存中卸载,不会删除本地硬盘的内容。
第二次加载是不用从远程服务器加载的,而是通过本地硬盘加载,所以不存在网络下载了。
感谢Xuan@UWA问答社区提供了回答
Mesh
Q:模型Meta中的hasExtraRoot参数的作用是什么?有什么历史原因么?
模型Meta中有个奇怪的参数hasExtraRoot,看起来是humanDescription旗下的,但实际会对任何类型的模型都造成影响。
这个参数无论是在API还是编辑器界面,都找不到调整的地方。当前项目中一部分是0,一部分是1。观察得出,这个在为1的情况下,会保留外层无Mesh关联的Transform;为0的情况下会移除顶层Child不超过1,并且无Mesh的Transform。
不知道这个是怎么生成的,是不是为了适配某些历史版本呢?
针对以上问题,有经验的朋友欢迎转至社区交流分享:
https://answer.uwa4d.com/question/64252d9f6778221ae30a0fd9
TextMeshPro
Q:TMP为什么有多次Delegate.Combine()的GC?
只有一个界面对一个TMP的OnPreRenderText进行了一次+=的操作,为什么在其他界面也发现有Delegate.Combine()的GC,且每次大小不同?
下图是唯一操作过的界面:
下图是其他界面,有2MB的,还有些几十KB的:
针对以上问题,有经验的朋友欢迎转至社区交流分享:
https://answer.uwa4d.com/question/6423ff146778221ae30955ca
Platform
Q:准备在海外发行游戏,请问身份认证类SDK有哪些比较常用?最好是能直接支持Unity接入的,谢谢。
A:Google、Facebook或Game Center应该都可以。
感谢WTF-082699@UWA问答社区提供了回答
封面图来源于网络
今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。
官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:465082844