为什么Unity使用AssetBundle热更的时候要剔除掉.mainfest文件

news2024/11/23 19:36:48

1)为什么Unity使用AssetBundle热更的时候要剔除掉.mainfest文件
​2)Addressable热更,断点续传问题
3)在线性空间,使用后处理解决UI混合问题


这是第341篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

AssetBundle

Q:为什么Unity使用AssetBundle热更的时候要剔除掉.mainfest文件?

A:在使用AssetBundle热更时,Unity会将每个AssetBundle的依赖关系和元数据保存在一个名为文件的文件中。

这个文件描述了AssetBundle的版本、包含哪些资源以及它们之间的依赖关系。

.mainfest文件在构建APK或发布AssetBundle包时会被打包进去,无法通过热更方式更新,在进行AssetBundle热更时,如果不剔除掉文件,则新下载的AssetBundle的文件会覆盖原来的文件,导致所有已经下载的AssetBundle都需要重新下载,因为它们的依赖关系信息已经丢失。因此,需要在进行AssetBundle热更时将文件从打包列表中剔除,以避免出现这种情况。

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


Network

Q:利用Addressable进行热更,采用Disable Catalog Update on StartUp方式,当更新进度没有完成时杀掉游戏,再重新启动游戏,此时catalogs.Count已经等于0,并不会在此触发更新,但其实还有部分资源未更新到,这种情况下应该怎么处理?

1. 首先不能放玩家进入游戏,因为资源不匹配。
2. 触发游戏重新更新,此时catalogs.Count=0,并不会更新资源。

  • 这种情况下是否可以使用Addressables.ClearResourceLocators()和 Caching.ClearCache()清理缓存和已经下载好的资源,再次触发热更,这时catalogs.Count 应该是不等于0的吧?

不知道大家都是怎么处理:资源更新一半杀掉游戏,重新登录游戏?

另外,AddressableAssetSetting->Catalog->Player Version Override这个设置使用的是默认的time stamp还是指定了一个版本号?我这里指定了一个固定版本,导致catalogs.Count=1,永远只是更新这次和母包的差异,比如中间已经有几次热更了,会把中间几次的热更给丢弃。针对这个问题,更新策略是怎么样的?

A1:不使用Addressables.UpdateCatalogs(),自己去服务器上下载Catalog文件,如果下载到一半了,取消,不修改版本号。下次进来接着去服务器下载Catalog文件。然后自己下载的Catalog文件可以用Addressables.LoadContentCatalogAsync()加载,然后得到IResourceLocator的所有Key,把所有Key传入下载列表中进行下载资源文件。

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

A2:进入游戏第一次Check,之后的那些异步操作都用缓存保存起来即可。

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

A3:第一,你用Disable Catalog Update on StartUp方式启动,就是默认不更新Catalog,但是在走后面更新的时候,Catalog其实已经更新完了,再调用API更新Catalog自然没有了。这时只要去GetDownloadSize然后直接更资源就行了。

Catalog的更新和资源更新是两个阶段。最好分开管理。

第二,AA其实只比较资源的Hash,因此没有版本号概念,所以不存在中间版本,永远是最新版本和母包。这个PlayerVersionOverride指你打Player的那个版本号,一般是更新母包时才递增。这种做法可以保证不管玩家手里是哪份资源,都能更到最新的,并且避免中间的逐版本升级流程。

再有,Keys基本还是需要自己去管理,比如你自己管理了20个Keys,然后调用Addressables.UpdateCatalogs()后告诉你其中5个更新了。那么如果你立即调用GetDownloadSizeAsync和DownloadDependenciesAsync,可以马上传入这5个Key。另外一种情况可能你这一次游戏中UpdateCatalogs获得5个更新。但是要到下一次启动游戏才调用GetDownloadSizeAsync和DownloadDependenciesAsync,那你可以把这20个Keys都传进去。

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


UI

Q:线性空间,美术资源是在Gamma空间制作的,参考该方法:
URP下Alpha从Gamma空间到Linner空间转换(二)——多Alpha贴图叠加_urp gamma liner_euphorias的博客-CSDN博客

UI效果是对了,但是明显整个界面变暗了,请问大家是如何解决这个问题的?

根据网上的教程,改了下,多了4个Blit,是否还有性能优化空间?

A1:如果用URP,可以修改URP源码,场景上使用线性空间,UI使用Gamma空间。

Git上有对应开源代码,适用的Unity版本不同,也都有点小bug需要修复:
UI_RenderPipelineInLinearSpace
URP-12-GammaUIAndSplitResolution

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

A2:如果3D相机的Renderer上有后处理,并且能改URP的管线,在UberPost的Frag最后直接做LineraToGamma,可能就不用加Pass。

而且,看起来这个后处理脚本是挂在了UIRenderer上,所以会影响到整体的颜色,可以试试在ForwardRenderer渲染结束后,UI绘制之前,对颜色做一次pow(color, 0.45)也就是LinearToGamma来中和最后的UIRenderer后处理的pow(color,2.2)。

感谢范世青@UWA问答社区提供了回答

A3:针对“多了4个Blit,是否还有性能优化空间”问题。直接cmd.Blit(_source, _source, _material);就可以了。

感谢题主黄大仙@UWA问答社区提供了回答

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/717922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业论文内容参考|基于Python的手机订餐系统的设计与实现

文章目录 导文摘要前言绪论1课题背景2国内外现状与趋势3课题内容相关技术与方法介绍系统分析系统设计系统实现系统测试总结与展望1本文总结2后续工作展望导文 计算机毕业论文内容参考|基于Python的手机订餐系统的设计与实现 摘要 本文基于Python语言,设计并实现了一个手机订餐…

我的毕业故事

前言 2023年6月25日,在拿到双证(毕业证书/学士学位证书)之后,我正式毕业,结束了本科学习阶段。 由于毕业设计中了盲审,因此在大致顺利的过程中平添了不少故事,这里就对近两个月做一个回顾。 盲审 首先解释一下什么…

MySQL之binlog、redolog、undolog

1.binlog是 mysql server 层的一种二进制日志,用来记录数据库的写入操作,并以"事务"的形式保存在磁盘上,主要的使用场景有主从复制和数据恢复。 2.redo log (重做日志)是InnoDB存储引擎产生的,记…

day30-Oracle函数

Oracle函数 1.oracle字符函数 1.1 拼接函数concat 1.2 首字母转大写initcap 1.3 lower转小写;upper转大写 1.4 trim去除首尾空格 1.5 substr截取字符串3,4,3代表从第三个字符开始,4代表共截取4个字符 1.6 replace替换字符串 2.oracl…

局部均方差滤波(磨皮)

note 锚点灰度值 用 原图像对应点的原灰度值 和 局部均值加权得到 局部均值 由 掩膜 区域计算得到 权重 由 局部方差 与用户输入参数计算确定 code // 局部均方差滤波 /*\brief 局部均方差滤波\param src:原矩阵,单通道\param res:结果矩阵\param size:掩膜矩形…

Linux学习之磁盘分区(fdisk、parted、df)、文件大小查看(ls、du)和文件写入(dd)

我用来演示的系统使用CentOS Linux release 7.9.2009 (Core),内核版本是3.10.0-1160.71.1.el7.x86_64。 fdisk fdisk -l可以查看分区,因为我这里使用的不是root用户,所以前边加上sudo。 可以看到当前只有sda一块磁盘,第二磁盘…

全志V3S嵌入式驱动开发(软、硬件调试方法总结)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 v3s开发板本身是比较小巧的,ddr也是嵌入在soc里面的,电路设计也不复杂,因此很受电子爱好者的喜欢。不过大部分朋…

对话小红书剑寒:如何跨方向技术融合,全局优化打造更智能的音视频系统?...

编者按:在 AI 时代,随着 ChatGPT 掀起技术狂潮,构建更智能的音视频系统已经成为音视频领域从业者的共同目标。 然而,音视频系统的智能化,每个从业者对其都有自己独特的视角和理解,正如“一千个人眼中有一千…

华为官宣2024年推出面向商用的5.5G全套网络设备

2023年6月29日华为董事、ICT产品与解决方案总裁杨超斌在2023 MWC上海展5G Advanced论坛上宣布,2024年,华为将会推出面向商用的5.5G全套网络设备。这也标志着ICT行业即将迈入5.5G时代。 经过四年的高速发展,5G建设已经取得了丰硕的成果。目前…

【花雕】全国青少年机器人技术一级考试备考实操搭建手册7

随着科技的不断进步,机器人技术已经成为了一个重要的领域。在这个领域中,机械结构是机器人设计中至关重要的一部分,它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说,了解机械结构的基础知识,掌…

MySql的操作跟命令

概述 仅仅为了加强记忆,废话不说,直接上正文。 快速开始 创建数据库。 进入MySql客户端,输入root用户的密码 Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 16 Server vers…

第3章 创建项目并初始化业务数据(过程记录)

项目声明和依赖 ECommerceRecommendSystem [pom.xml] 公用的声明、依赖、插件 properties 声明 log4g:处理日志的框架(日志的具体实现)sel4g:简单日志门面(简单日志的接口)mongodb-spark:Mong…

Python 元类实现ORM

目录 ORM概念 __new__、__init__、__call__的介绍 通过元类简单实现ORM中的insert功能 抽取到基类中 ORM概念 ORM(Object Ralational Mapping,对象关系映射)用来把对象模型表示的对象映射到基于 SQL 的关系模型数据库结构中去。这样&am…

隔断推拉门滑动不畅常见的原因和解决方法

隔断推拉门滑动不畅常见的原因和解决方法如下: 1. 滑轨污秽:如果滑轨上有灰尘、油垢或杂物积聚,会影响推拉门的滑动效果。解决方法是定期清洁滑轨,使用吸尘器或刷子清除污垢,并用湿布擦拭干净。 2. 滑轨损坏&#xff1…

Git---分支管理

文章目录 前言一、理解分支二、创建分支三、切换分支四、合并分支五、删除分支六、合并冲突七、分支管理策略八、分支策略九、bug分支十、删除临时分支总结 前言 本篇博客开始介绍Git的杀手级功能之一 : 分支.分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习C的时候,另…

MySQL学习基础篇(六)---多表查询

MySQL学习基础篇(六)—多表查询 对于多表查询的理解: 多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 前提条件:这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是…

浅析EasyCVR视频技术与AR实景智能管理平台在智慧厂区中的应用

一、背景分析 新型智慧厂区是运用人工智能、大数据、物联网和设备监控技术加强厂区安保和信息管理。通过先进技术,保障厂区生产运营安全,同时减少生产线上的人工干预、及时正确地采集各类生产数据,以及合理的生产计划编排与生产进度&#xff…

线性规划的对偶问题(The Dual of LP)

线性规划的对偶问题(The Dual of LP) 对偶理论是线性规划中最重要的理论之一,是深入了 解线性规划问题结构的重要理论基础。同时,由于问题提 出本身所具有的经济意义,使得它成为对线性规划问题系 统进行经济分析和敏感…

原生 js点击空白处 关闭遮罩层(关闭某个div)

如图所示 点击空白处关闭此div document.addEventListener(click, function(e) {//监听页面点击事件var screenDoc document.querySelector(.controlHead);//需要关闭的divvar control document.querySelector(.control);//设置的按钮if (screenDoc && !screenDoc.co…

基于TF-IDF+Tensorflow+pyQT+孪生神经网络的智能聊天机器人(深度学习)含全部工程源码及模型+训练数据集

目录 前言总体设计系统整体结构图系统流程图孪生神经网络结构图 运行环境Python 环境TensorFlow 环境 模块实现1. 数据预处理2. 创建模型并编译3. 模型训练及保存4. 模型应用 系统测试1. 训练准确率2. 测试效果3. 模型应用 工程源代码下载其它资料下载 前言 本项目利用TF-IDF&…