3

Addressable卸载AssetBundle失效的疑惑

 1 year ago
source link: https://blog.uwa4d.com/archives/TechSharing_331.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/642406386778221ae3095c5e


Q:模型Meta中的hasExtraRoot参数的作用是什么?有什么历史原因么?

模型Meta中有个奇怪的参数hasExtraRoot,看起来是humanDescription旗下的,但实际会对任何类型的模型都造成影响。

1.png

这个参数无论是在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,且每次大小不同?

下图是唯一操作过的界面:

2.png

下图是其他界面,有2MB的,还有些几十KB的:

3.png

针对以上问题,有经验的朋友欢迎转至社区交流分享:
https://answer.uwa4d.com/question/6423ff146778221ae30955ca


Platform

Q:准备在海外发行游戏,请问身份认证类SDK有哪些比较常用?最好是能直接支持Unity接入的,谢谢。

A:Google、Facebook或Game Center应该都可以。

感谢WTF-082699@UWA问答社区提供了回答,有经验的朋友欢迎转至社区交流分享:
https://answer.uwa4d.com/question/6423accf6778221ae3091670

封面图来源于网络


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

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:465082844


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK