3

Addressable编辑器相关开发问题

 3 years ago
source link: https://blog.uwa4d.com/archives/TechSharing_245.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.

Addressable编辑器相关开发问题

  • 作者:admin
  • 时间:4月7日
  • 浏览:233 次
  • 分类:厚积薄发

1)Addressable编辑器相关开发问题
​2)Addressable动态设置更新地址
3)Addressable在网络差的环境中下载资源
4)Android ETC2 Fallback的疑问
5)内置Shader中“Dependency”的定义


这是第245篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

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

Addressable

Q:我想通过编辑器脚本来做自动导入下图这个选项并打钩,能自己设置相关的Key。有没有参考的工程或代码示例?谢谢!

1.png

A:用AssetDatabase.AssetPathToGUID和AddressableAssetSettings.CreateOrMoveEntry。

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


Addressable

Q:Addressable动态配置的热更新地址,使用了文档里面的静态变量 (放大括号里),Addressable启动后获取到的Catalogs.Count一直为零,怀疑是地址的问题,有没有要求这个类也是静态的?

2.png

如果我配死地址,是能更新下来的,比如这样:

4.png

这种更新已经测试通过,目前是想在生成首包后动态去改这个RemoteLoadPath。

A:我们是这样子的,RemoteLoadPath指向一个static的property,这个property从配置表里返回资源更新的地址。

5.png

6.png

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


Addressable

Q:我们使用Addressable来做资源的热更新。现在模拟了一个较差网络环境下的下载资源情况,使用Windows上模拟丢包的软件模拟了网络环境,丢包率设置为30%。

Addressable的下载会卡死在某个百分比,DownloadDependenciesAsync的Completed事件不会被触发,所以无法通过AsyncOperationHandle的status判断是失败还是成功。

Log显示的报错是:

7.png

请问这种情况有什么好的解决方法吗?

A:后来发现是有几个资源的Time Out值设置得太大了,导致一直在等待,所以进度条卡死。解决方法是将Time Out值设置的小一点,并增加retry次数。

我Time Out设置的是20。感觉不宜太长,否则超时的时候下载进度感觉会长时间卡死;太短的话,移动网络太差,也经常会超时导致超时下载失败。

感谢题主jim@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/605bfa43cfa35d5b53669c47


Editor

Q:我们的游戏在模拟器上运行一会儿就会崩溃,怀疑是图片被解压成RGBA32导致内存过大产生的崩溃。Android ETC2 Fallback设置为16 bit是不是能够大幅降低在低端手机的内存占用呢?

另外我在Build Setting选择ETC2 Fallback后,Project Setting没有任何变化,这个值是保存在哪里的?应该怎么上传?(版本:Unity 2018.4.31)

A:模拟器一般内存都够的,如果怕是内存问题可以调整一下分配给模拟器的内存。最好还是连上Logcat看一下Log,是因为内存问题,还是32位或者64位应用的问题,又或者是64位LuaJit之类的问题。这个值存在Library\EditorUserBuildSettings.asset文件中。

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


Shader

Q:正在尝试自定义Terrain的Shader,发现内置Shader的末尾有这样两行,想问问其中的“Dependency”是做什么用的,后面指定的Shader起什么作用?

Dependency “AddPassShader” = "Hidden/TerrainEngine/Splatmap/Diffuse-AddPass"
Dependency “BaseMapShader” = “Diffuse”

A:Dependency是一个未文档的关键词,其用于指定Shader依赖关系,实际作用有两个:

  • 打包的时候依赖不会遗漏,可以通过AssetBundle Browser验证。
  • Unity 2019之后可以通过C#接口Shader.GetDependency(等号左侧依赖名) 获取等号右侧Shader名。

地形系统那么做,是因为有三种光照模型,通过GetDependency(依赖名) 可以减少一些Shader名的硬编码,依赖名充当了接口的作用。

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

封面图来源于网络


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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK