UseContentHash选项能否在打包AssetBundle时计算可靠的Hash

1)UseContentHash选项能否在打包AssetBundle时计算可靠的Hash
2)如何清理Native Reserved部分的内存
3)Addressables资源完整性校验
4)通过Image.color和CanvasRenderer.SetColor修改UI组件颜色的区别


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

AssetBundle

Q:看到Unity 2022.3新增了一个BuildAssetBundleOptions.UseContentHash,请问打包AssetBundle的时候是否能计算可靠Hash?

官方信息如下:
Unity - Scripting API: BuildAssetBundleOptions.UseContentHash (unity3d.com)

A:建议别用,增加这个是为了修复我提交的一个Bug Report:
LOST SPRITE REFERENCES IN BUNDLES WHEN MOVING THE ASSETS [ASSETBUNDLE INCREMENTAL BUILD BUG, WORKS WITH UCBP]

结果没修好,会造成新的Bug:
ADDING OR REMOVING ASSETS TO BUNDLES WILL CAUSE OTHER ASSETS TO BE REBUILT WHEN BUILDASSETBUNDLEOPTIONS.USECONTENTHASH IS USED

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


Memory

Q:请问以下情况下,如何清理Native Reserved部分的内存?

前置条件:
1. Android IL2CPP ARM64版本
2. Unity 2021.3.31f1
3. Memory Profiler版本为0.71 Preview版本

已知:ManagedHeap的Reserved部分,也就是上图中323.4MB部分,会在以下代码执行大约5次之后降低,最终会和In Use部分持平,也就是Managed Reserved大约会变成260.1MB。

Resources.UnloadUnusedAssets();
GC.Collect();

对于Native Memory,尽管我把In Use部分降低到了253.2MB,但Reserved部分,也就是0.89GB部分,却一直没法降低。

我想知道是否有什么函数可以降低这个Reserved内存?

针对以上问题,有经验的朋友欢迎转至社区交流分享:
UWA问答 | 游戏开发者互动问答社区 | 侑虎科技


Addressable

Q:游戏是启动的时候检测资源更新并下载,当下载到一半的时候直接退出游戏。再启动游戏的时候Addressables无法检测到要更新的资源。

我查看了下载写入资源的文件夹,发现Catalog文件已经完全写入了,估计是这个原因导致Addressables无法检测到更新的资源。

请问,像这种下载到一半,希望Addressables能接着上次的进度继续下载的要怎么处理呢?

还有一点,不知道Addressables有没有提供资源完整性校验的方法。

我希望能在资源全部下载完成后,再检测一遍资源文件是否完整(完全下载完成以及文件是否有损坏)。并把这个检测的功能放到UI上,这样在一些不可预测的环境下,不至于卡死且无法解决问题。

A:每个版本下载完整应该有一个MD5值,这个就是catalog.hash的值。如果下载完成,成功进入游戏,就该把这个值写入PlayerPrefs。下次进入的时候继续判断这个值是否和服务器的catalog.hash相等,如果不相等,说明上次没有下完整,本次该继续走Addressables.DownloadDependenciesAsync方法。Addressable内部会自动针对已经下载的Bundle不会继续下载,因此只会下载最新差异的大小。

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


UI

Q:通常,当我们想要更改Image组件的Color时,我们可以直接修改Image组件的Color属性。原理是修改网格的顶点颜色。此操作有一定的开销,因为会导致Canvas.BuildBatch操作。

我最近看了一些UGUI源码,发现当Button组件设置为Color Tint类型时,点击时会出现颜色渐变过程,此时会触发一个协程,每次执行协程都会修改CanvasRenderer组件的颜色,而不是直接修改Image组件的Color属性。

public abstract class Graphic : UIBehaviour, ICanvasElement
{
    private readonly TweenRunner<ColorTween> m_ColorTweenRunner;

    //trigger on click
    public virtual void CrossFadeColor(Color targetColor, float duration, 
        bool ignoreTimeScale, bool useAlpha, bool useRGB)
    {
        //...
        var colorTween = new ColorTween {duration = duration, 
            startColor = canvasRenderer.GetColor(), targetColor = targetColor};

        //The callback here will be triggered in the coroutine,
        //Modify the color of the canvasRenderer component
        colorTween.AddOnChangedCallback(canvasRenderer.SetColor);

        colorTween.ignoreTimeScale = ignoreTimeScale;
        colorTween.tweenMode = mode;

        //Start coroutine
        m_ColorTweenRunner.StartTween(colorTween);
    }
}

请问这两种写作方式之间的本质区别是什么?直接修改CanvasRenderer.color是否更有效?

针对以上问题,有经验的朋友欢迎转至社区交流分享:
UWA问答 | 游戏开发者互动问答社区 | 侑虎科技

封面图来源于网络


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

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kubernetes(K8s)的使用和常用命令

K8S kubernetes&#xff0c;由于k和s之间有8个字符&#xff0c;所以简称k8s&#xff0c;是一个全新的基于容器技术的分布式架构领先方案&#xff0c;是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本&#xff0c;于2015年7月发布第一个正式版本&#xff0c;它的本质…

密码学:一文看懂Base64算法

文章目录 前言什么是Base64&#xff1f;Base64算法的由来Base64算法的定义Base64算法与加密算法的关系实现原理非ASCII码字符编码传递模型应用场景电子邮件传输网络数据传输密钥存储数字证书 参考 前言 Base64常常在我们开发中出现&#xff0c;我们可能只知道它是一串乱码&…

60m长H型钢在线测长与切割是如何做到的?

H型钢是断面形状类似于大写拉丁字母H的一种经济断面型材&#xff0c;又叫万能钢梁、宽缘(边)工字钢或平行翼缘工字钢。应用范围广&#xff0c;各种民用和工业建筑结构&#xff0c;各种大跨度的工业厂房和现代化高层建筑&#xff0c;大型桥梁等均可看到H型钢的身影。 它应用所在…

opencv入门到精通——Canny边缘检测

目录 理论 OpenCV中的Canny Edge检测 附加资源 在本章中&#xff0c;我们将学习 Canny边缘检测的概念 OpenCV函数: cv.Canny() 理论 Canny Edge Detection是一种流行的边缘检测算法。它由John F. Canny发明 1.这是一个多阶段算法&#xff0c;我们将经历每个阶段。 2.降…

C 练习实例19

题目&#xff1a;一个数如果恰好等于它的因子之和&#xff0c;这个数就称为"完数"。例如61&#xff0b;2&#xff0b;3.编程找出1000以内的所有完数。 程序分析&#xff1a;请参照&#xff1a;C 练习实例14。 步骤分析&#xff1a; 写一个函数判断是否是完数 找出…

Avalonia学习(十七)-CEF

今天开始继续Avalonia练习。 本节&#xff1a;CefNet 1.引入 CefNet.Avalonia.Eleven 2.项目引入 Program中加入 using Avalonia; using Avalonia.ReactiveUI; using Avalonia.Threading; using CefNet; using System; using System.IO; using System.Linq; using System…

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-10奈奎斯特稳定性判据-Nyquist Stability Criterion

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-10奈奎斯特稳定性判据-Nyquist Stability Criterion Cauchy’s Argument Priciple 柯西幅角原理 结论&#xff1a; s s s平面内顺时针画一条闭合曲线 A A A&#xff0c; B B B曲…

Python从入门到网络爬虫(函数详解)

前言 函数是变成语言中最常见的语法&#xff0c;函数的本质就是功能的封装。使用函数可以大大提高编程效率与程序的可读性。函数是能够实现特定功能的计算机代码而已&#xff0c;他是一种特定的代码组结构。 函数的作用 1.提升代码的重复利用率&#xff0c;避免重复开发相同代…

【代数学作业1-python实现GNFS一般数域筛】构造特定的整系数不可约多项式:涉及素数、模运算和优化问题

代数学作业1-完整版&#xff1a;python实现GNFS一般数域筛 写在最前面背景在GNFS算法中选择互质多项式时&#xff0c;需要考虑哪些关键因素&#xff0c;它们对算法的整体运行时间有何影响? 练习1题目题目分析Kleinjung方法简介通用数域筛法&#xff08;GNFS&#xff09;中的多…

简易机器学习笔记(七)计算机视觉基础 - 常用卷积核和简单的图片的处理

前言 这里实际上涉及到了挺多有关有关理论的东西&#xff0c;可以详细看一下paddle的官方文档。不过我这里不过多的谈有关理论的东西。 【低层视觉】低层视觉中常见的卷积核汇总 图像处理中常用的卷积核 在代码中&#xff0c;我们实际上是用不同的卷积核来造成不同的影响&a…

从零开始搭建企业级前端项目模板(vue3+vite+ts)

文章目录 主要内容一、vite脚手架工具初始化项目二、项目代码加入eslint校验和自动格式化2.1安装对应依赖插件2.2 配置script脚本&#xff0c;项目安装eslint配置2.3 安装完成后&#xff0c;后面启动项目还缺少一些依赖&#xff0c;提前按需安装好 三&#xff0c;修改eslintrc.…

达梦数据:数字化时代,国产数据库第一股终于到来?

又是新的一年开始。回首一年前的此时&#xff0c;在大家千呼万唤地期待中&#xff0c;数据基础制度体系的纲领性文件正式发布。 时隔一年之后&#xff0c;数据资源入表如约而至。2024年1月1日《企业数据资源相关会计处理暂行规定》正式施行&#xff0c;各行各业海量数据巨大的…

隔离式双向DC-DC 转换器介绍

1.前言 由于电力电子、数字控制及电池技术的进步&#xff0c;促使再生能源、储能系统及新能源应用等产业的蓬勃发展。例如 : 电动汽车的电能系统、对电力系统用电进行削峰填谷和调节电力的储能系统、应急电源及可携式行动电源等。这些设备都需要双向电力转换系统在电力系统与电…

5G阅信助力互联网行业:XX出行-出票通知,案例分析

XX出行日常有大量业务通知短信下发&#xff0c;用户触达频次和用户打开率都比较高&#xff0c;但原短信无法带来附加营销增值&#xff0c;通过阅信增值服务消息将两者结合起来&#xff0c;可实现业务的多渠道引流&#xff0c;开拓了新的渠道和方式。 项目概述&#xff1a; 1. 项…

MATLAB基本绘图操作(二维和三维绘图)

MATLAB基本绘图操作 文章目录 MATLAB基本绘图操作1、二维平面绘图1.1、线条&#xff08;折线图&#xff09;1.2、条形图1.3、极坐标图1.4、散点图 2、三维立体绘图2.1、三维曲面图2.2、三维曲线图&#xff08;点图&#xff09; 3、图片分区&#xff08;子图&#xff09; 1、二维…

机器学习:贝叶斯估计在新闻分类任务中的应用(实验报告)

文章摘要 随着互联网的普及和发展&#xff0c;大量的新闻信息涌入我们的生活。然而&#xff0c;这些新闻信息的质量参差不齐&#xff0c;有些甚至包含虚假或误导性的内容。因此&#xff0c;对新闻进行有效的分类和筛选&#xff0c;以便用户能够快速获取真实、有价值的信息&…

如何把照片多余的地方擦除?一键消除图片上的瑕疵,简单又轻松,太方便了

在数字繁荣的时代&#xff0c;图片处理已然成为我们生活乐章中不可或缺的一部分&#xff0c;就如画师手中的画笔般灵动&#xff0c;摄影师镜头下的世界般多彩。然而&#xff0c;在捕捉或获取这些美丽的图片时&#xff0c;可能会不小心闯入一些不速之客&#xff0c;给画面带来瑕…

Linux Perf 介绍

文章目录 前言 二、安装Perf三、二级命令3.1 perf list3.2 perf record/report3.3 perf stat3.4 perf top 四、使用火焰图进行性能分析4.1 下载火焰图可视化生成器4.2 使用perf采集数据4.3 生成火焰图参考资料 前言 perf是一款Linux性能分析工具&#xff0c;内置在Linux内核的…

爬虫工具(tkinter+scrapy+pyinstaller)

需求介绍输入&#xff1a;关键字文件&#xff0c;每一行数据为一爬取单元。若一行存在多个and关系的关键字 &#xff0c;则用|隔开处理&#xff1a;爬取访问6个网站的推送&#xff0c;获取推送内容的标题&#xff0c;发布时间&#xff0c;来源&#xff0c;正文第一段&#xff0…

自动化测试框架总结

1. 单元测试框架 几乎所有的主流语言&#xff0c;都会有其对应的单元测试框架,下面简单介绍一下python,java,C#三种语言的常见单元测试框架 1.1 Python python常见单元测试框架包括unittest, pytest 1.1.1 unittest unittest单元测试框架不仅可以适用于单元测试&#xff0c…