网易首页 > 网易号 > 正文 申请入驻

【厚积薄发】Addressable RemoteBuildPath下部分资源更新上传问题

0
分享至

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

UWA 问答社区:answer.uwa4d.com

UWA QQ群2:793972859(原群已满员)

本期目录:

  • Addressable RemoteBuildPath下部分资源更新上传问题
  • Shader内存占用突然变大
  • Unity 2018.4上材质对贴图的冗余引用
  • 编辑器中出现大量GC操作导致卡顿

  • JsonUtility.ToJson浮点型保留小数问题

Addressable

Q:Addressable设置好RemoteBuildPath路径后,Remote_Group(该Group下有多个资源包)下修改了一个资源包,Build->Update a previous build 结束后,RemoteBuildPath路径下将Remote_Group的所有资源包都重新生成了一遍(将所有的资源包从该路径下删除,再执行时还是会全部生成)。因为要将Remote_Group下的资源包上传到服务器,只希望上传发生改变的Remote资源,不希望重复上传所有的资源包,该怎么操作呢?

A:虽然全部重新生成,但是应该只有修改了的那份是不一样的,可以对比一下看看hash文件里记录的hash有没有变化。其实在服务器上直接都上传就行了,客户端会根据hash的不同下载变化了的Bundle。这种模式能保证服务器上的是最新的,客户端不管哪个版本都只要下载差异Bundle就行了。

感谢黄程@UWA问答社区提供了回答

A2:用了一个折中的办法,每次上传前计算已存在文件的md5,新的文件和md5值发生变化的文件上传至服务器。

感谢题主猴小样2016@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/609b48a56bb31032f9791672

Memory

Q:项目Unity版本升级后,Shader内存占用变为原先的100倍,请问是什么原因导致的?

A:这个应该是因为Unity 2019.4.20这个版本以后修改了Shader内存占用的统计方式。Unity这样改,方便大家直接看到是哪个Shader占用高,从而更好地定位问题。

可以看到在版本升级后,Shader占用120多MB,ShaderLab变成了92KB。

2019.4.20f1 Release Notes

感谢芭妮妮@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/60a367746bb31032f979173b

Material

Q:打包后使用AssetHunter插件分析发现有很多冗余引用,但是在游戏中使用Profiler却没有。

打开材质文件发现保存了很多旧的贴图引用信息:

如_CloudTex这个,是旧版本使用过的,新的Shader里都没有这个属性了。一般的查找引用的方法是找到所有关联的GUID,那就会找到这些旧的引用,但在手机上使用Profiler看内存时却没有相关引用的贴图被加载。是否是因为Unity打包时会自动把这些旧引用筛除?尽管在Editor上还是找得到这些冗余引用,是否可以不用理会?

A1:旧的Shader使用过的Texture引用会被保留在序列化信息中,这是Unity有意的设计,为了避免编辑器下切换Shader再换回来时需要重新配置的麻烦。

Unity在打包时确实会对材质进行深度检查,把当前Shader没有使用的Texture依赖都去除,因此通常情况下打包旧的引用也不会导致包体变大。

但旧的引用在Editor下还存在一个问题,AssetDatabase.GetDependencies接口返回的引用会包括旧的引用,它不会进行深度检测来进行剔除。右键资源Select Dependencies调用的是这个接口,所以也会显示旧的引用,如下图:

pic2和pic3是当前Shader2没有引用的。

所以使用GetDependencies这个接口实现一些功能,可能由于旧引用导致意外的问题。解决方法是:使用EditorUtility.CollectDependencies这个接口返回剔除旧引用的结果。

此外,如果Mat和pic1,pic2,pic3分配别单独打了一个AB包,那么打出的mat.manifest文件中会显示旧的Texture引用,这就是AssetBundle打包的一个不太合理的地方了,还没有调研新的Addressable系统是否做了改进。

感谢Prin@UWA问答社区提供了回答

A2:参考这个帖子:

https://forum.unity.com/threads/material-asset-keeps-references-to-assets-that-are-not-used.523192/

可以直接用里面的CleanUpMaterials来清理材质。

感谢小埃拉@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/60a65af06bb31032f9791779

Editor

Q:编辑器下AssetDatabase.GetAllAssetBundleNamesWithoutVariant()出现大量GC操作导致卡顿。

复现步骤:

1. 游戏里面选择一个材质,或者其他对象。

2. 把Unity编辑器切换到后台再切回来,我这里是直接点开Sublime再切回Unity

做完上面两步后,Unity就会变的很卡很卡,通过Profiler分析EditorLoop可以看到AssetDatabase.GetAllAssetBundleNamesWithoutVariant有大量的GC操作,如下图:

用的是Unity 2019.4.15f1,下面是我尝试过的解决方案:

1. 怀疑Unity版本问题,可是笔记本里面安装的同版本Unity新建工程是复现不了。

2. 怀疑OnInspectorGUI有问题,然后把代码里面的所有OnInspectorGUI注释了,也还是能复现。

3. 怀疑ShaderGUI有问题,把所有ShaderGUI相关代码删了,一样能复现。

有大佬可以提供其他思路去排查这个问题吗?我们现在临时解决方法是,切换一下选中对象就不卡了。

A:项目中是通过设置AssetImporter的bundleName来标记Bundle的吗?

importer.assetBundleName = bundleName;
importer.assetBundleVariant = variant;

查看了一下编辑器部分的源码,发现AssetDatabase.GetAllAssetBundleNamesWithoutVariant();这个API是在绘制下面这部分的时候调用的。

猜测如果BundleName和BundleVariant较多,会不会引起卡顿?

Q:我们项目导入资源的时候是有只设置了Bundle Name,也就是下面的设置方式 importer.assetBundleName = bundleName; 项目是没有设置BundleVariant,不过确实有不少BundleName,对于BundleName数量官方有上限要求?

A:你可以试一下在代码中手动调用一下AssetDatabase.GetAllAssetBundleNamesWithoutVariant()(internal方法,通过反射调用),看看是不是会造成大量GC和卡顿。如果自己调用也会造成卡顿,八成就是这个引起的。如果就是这个Bundle Name这个过多因此的卡顿,那你就用AAB的方式打bundle就好了,别设置importer.assetBundleName。

感谢马三小伙儿@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/60a3ab2e6bb31032f9791754

Script

Q:在使用JsonUtility.ToJson时,保存float类型时,提前已经做好保留两位小数,但ToJson结果1.059999999999999都是这样的。请问有解决办法吗?

A:很遗憾,Unity的JsonUtility是在Native层实现的,是闭源的并且提供的接口功能极少。建议使用其他Json插件,如Newtonsoft.json:

https://github.com/SaladLab/Json.Net.Unity3D

感谢Prin@UWA问答社区提供了回答

A2:自荐一下魔改版LitJson4Unity。

https://github.com/XINCGer/LitJson4Unity

LitJson4Unity:适用于Unity的改进型LitJson库

简介:基于原生的LitJson库改造的适用于Unity的LitJson库。

支持以下原生版本不支持的特性:

  • 支持float类型(最新原生版本已经支持)

  • 支持Unity内建类型(Vector2、Vector3、Rect、AnimationCure、Bounds、Color、Color32、Quaternion、RectOffset等)

  • 支持JsonIgnore Attritube,对某些字段跳过序列化

  • 支持对输出的Json内容格式化,更规整

使用方法:直接将 Plugins/LitJson目录下所有的cs脚本放到你的工程中即可。

【Unity游戏开发】跟着马三一起魔改LitJson

https://www.cnblogs.com/msxh/p/12541159.html

感谢马三小伙儿@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/60a780756bb31032f9791813

封面图来源于网络

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

官网:www.uwa4d.com

官方技术博客:blog.uwa4d.com

官方问答社区:answer.uwa4d.com

UWA学堂:edu.uwa4d.com

官方技术QQ群:793972859(原群已满员)


近期精彩回顾

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
79岁王奎荣将北京140平房子、2000多万存款,全部赠予小37岁妻子

79岁王奎荣将北京140平房子、2000多万存款,全部赠予小37岁妻子

老鹈爱说事
2026-06-23 02:15:54
250架轰6全副武装,进入战备状态,小泉进次郎:中国是超级核大国

250架轰6全副武装,进入战备状态,小泉进次郎:中国是超级核大国

阿伧说事
2026-06-03 01:43:46
柬埔寨抓了条“大鱼”!内鬼浮出水面,竟是我们信任的商会长?

柬埔寨抓了条“大鱼”!内鬼浮出水面,竟是我们信任的商会长?

李云飞Afey
2026-06-19 19:06:51
速递!中国篮协开紧急会议,杜锋或顶替郭士强,赵继伟打封闭上阵

速递!中国篮协开紧急会议,杜锋或顶替郭士强,赵继伟打封闭上阵

多特体育说
2026-07-05 09:04:44
被遗忘的美国汽车品牌复活,2.15万美元皮卡用内燃机挑战电动新秀

被遗忘的美国汽车品牌复活,2.15万美元皮卡用内燃机挑战电动新秀

摸鱼算法
2026-07-05 04:43:17
1961年,陈赓上海病逝,消息传到中南海,主席:你们都不晓得他!

1961年,陈赓上海病逝,消息传到中南海,主席:你们都不晓得他!

墨策史
2026-07-05 00:36:47
浅蓝同色系瑜伽套装,贴身面料完整勾勒熟女人妻饱满丰腴曲线

浅蓝同色系瑜伽套装,贴身面料完整勾勒熟女人妻饱满丰腴曲线

只要高兴就好
2026-06-28 20:26:38
承重格纹比基尼,渔村海边超负荷营业

承重格纹比基尼,渔村海边超负荷营业

飛尚日记
2026-07-05 00:26:02
一夜之间,第三波救楼市开始了!

一夜之间,第三波救楼市开始了!

阿离家居
2026-07-03 13:02:10
家里有这些保健品赶紧停,央视已点名,全是造假货,快扔掉

家里有这些保健品赶紧停,央视已点名,全是造假货,快扔掉

医学科普汇
2026-06-14 09:55:14
人过80岁,哪怕身体再健康,也要记住这四句话,晚年远离病痛

人过80岁,哪怕身体再健康,也要记住这四句话,晚年远离病痛

观星赏月
2026-07-03 12:03:48
向太曝《主角》幕后:张嘉益拿着本子求张艺谋,王菲被打动

向太曝《主角》幕后:张嘉益拿着本子求张艺谋,王菲被打动

韩小娱
2026-07-05 08:06:51
3-0!誉为“史上最强U17国足”狂飙 双杀澳大利亚 剑指世界杯8强

3-0!誉为“史上最强U17国足”狂飙 双杀澳大利亚 剑指世界杯8强

侃球熊弟
2026-07-05 21:27:52
特斯拉动真格了!新车官宣上市,主动悬架+751km续航+大六座!

特斯拉动真格了!新车官宣上市,主动悬架+751km续航+大六座!

娱乐圈的笔娱君
2026-07-05 15:48:41
四川绵竹市发生3次地震 震级最大4.5级

四川绵竹市发生3次地震 震级最大4.5级

人民资讯
2026-07-05 23:55:05
玥儿和爸爸小菲畅游环球影城,奶奶又带去艺术展!孩子脸上露笑容

玥儿和爸爸小菲畅游环球影城,奶奶又带去艺术展!孩子脸上露笑容

人间烟火记事本
2026-07-05 16:49:17
男篮惨败后迎来1大利好?中国队或死里逃生晋级:郭士强因祸得福

男篮惨败后迎来1大利好?中国队或死里逃生晋级:郭士强因祸得福

篮球快餐车
2026-07-05 07:53:34
哈马斯白麻雀被永久掩埋!以军耗时3个月摧毁加沙最大地下工事

哈马斯白麻雀被永久掩埋!以军耗时3个月摧毁加沙最大地下工事

北山战史
2026-07-04 15:38:29
科技之后谁是主线?机构最新研判

科技之后谁是主线?机构最新研判

证券时报
2026-07-05 20:37:15
人过73岁后,永远不要在熟人面前,说以下6句话,谁说谁后悔

人过73岁后,永远不要在熟人面前,说以下6句话,谁说谁后悔

风起见你
2026-07-05 15:55:54
2026-07-06 03:40:49
侑虎科技UWA incentive-icons
侑虎科技UWA
游戏/VR性能优化平台
1593文章数 987关注度
往期回顾 全部

科技要闻

华为:逻辑折叠将大幅提升麒麟CPU核心频率

头条要闻

四川深夜连发3次超4级地震 居民外出躲避回屋再遇地震

头条要闻

四川深夜连发3次超4级地震 居民外出躲避回屋再遇地震

体育要闻

姆巴佩点走巴拉圭:巴黎三代左锋传承

娱乐要闻

霉霉婚礼照片泄露 有四人违规

财经要闻

揭秘跨境“对敲”换汇黑产

汽车要闻

方程豹钛9内饰曝光 用上了长联屏设计/下半年上市

态度原创

亲子
本地
手机
游戏
公开课

亲子要闻

工程车爱游泳

本地新闻

国内足球之旅?这座小城给你高分答案

手机要闻

2026下半年换机方向定了:大屏手机要火,华米OV耀聚齐了

《漫威争锋》美国队长性感皮肤遭修改 粉丝们生气了

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版