Q&A——资源管理(九)

Unity基础知识学习五,UGUI优化相关 1.什么是UGUI优化 2.为什么要有UGUI优化 3.如何使用UGUI优化,使用UGUI优化的不同方案比较 4.源码实现 5.关键点,重要节点,疑难杂症场景 参考资料 记录最全面的ugui优化策略_bommy游戏的博客-优快云博客 对于Unity的UGUI的优化以及面试可能遇到关于UGUI的问题_头号理想的博客-优快云博客 ... 阅读详情

资源管理

Q1:我在UGUI里更改了Image的Color属性,那么Canvas是否会重建?我只想借用它的Color做Animation里的变化量。

如果修改的是Image组件上的Color属性,其原理是修改顶点色,因此是会引起网格的Rebuild的(即Canvas.BuildBatch操作,同时也会有Canvas.SendWillRenderCanvases的开销)。而通过修改顶点色来实现UI元素变色的好处在于,修改顶点色可以保证其材质不变,因此不会产生额外的Draw Call。


资源管理

Q2:AssetBundle中资源同名但实际不同,请问会在UWA的资源检测报告中被认为是冗余的吗?

项目中的同名资源在UWA的资源检测报告中是不会被认为冗余的。在资源检测过程中,我们并不是通过资源的名称来判定其是否冗余。如果资源本身是不同的,即使名称相同,UWA报告也不会判定是冗余。

资源管理

Q3:移动游戏场景中,相同的怪物会动态合并吗?如下设置可行吗?
请输入图片描述
请输入图片描述

默认情况下,带蒙皮的Mesh是不支持动态合批的。如果场景中相同材质的蒙皮网格数量很多,可以考虑通过插件MeshBaker来进行合并,具体方法大家可以参考好插件让你事半功倍!


资源管理

Q4:EventSystem.Update()占用过高怎么优化?
请输入图片描述

EventSystem.Update 的开销分为两个部分:

  1. 来自被触发的响应事件,这部分的开销实际上并不属于事件系统本身,比如:某次点击触发了一个开销很高的逻辑函数,尤其是涉及到资源的加载和实例化。对于这类开销,我们建议通过Profiler.Begin/EndSample或者UWA提供的UWA API,对这些逻辑函数进行进一步的分析。

  2. 事件检测的开销,在默认情况下所有的UI元素都是事件检测的目标,因此当界面上UI元素数量很多,且长时间接触屏幕时,会有较高的持续开销。对于这类开销,我们建议通过以下几种方式来优化:
    a) 合理划分子Canvas,只有需要检测事件的界面才需要挂上GraphicRaycaster组件。
    b) 在Unity5.2之后的版本中,尽可能将不需要参与事件检测的UI元素的 Raycast Target 属性的勾选去掉。而对于Unity 4.x的版本,则可以尝试对UI部分的源码来进行修改以达到类似的效果。

资源管理

Q5:打包AssetBundle的时候,我发现切换场景时,即使打同一个场景的AssetBundle,它们的Hash值都是不一样的,可能是什么原因造成的呢?

在不同的场景下打包同一个资源或场景时,如果出现AssetBundle的差异,目前很可能是Shader Stripping造成的,其原理可见文档:https://docs.unity3d.com/Manual/class-GraphicsSettings.html

简单来说就是根据当前场景对Shader进行简化,因此如果打包时包含的场景的Lightmap或Fog设置不同,打出来的AssetBundle包也有可能是不同的。可以尝试通过把Graphics Settings中的Shader Stripping设置进行修改来避免这个问题。


资源管理

Q6:当UI关闭后,Texture图片却还留在内存,是下次垃圾回收或者Resources.UnloadUnusedAssets调用的时候就会清除吗?如果想立即清除,该如何操作?

垃圾回收并不会卸载内存中的资源,而Resources.UnloadUnusedAssets是可以的,但前提是纹理资源已经不再被其他Object引用。如果要立即清除,可以尝试直接调用Resources.UnloadAsset来进行卸载。


资源管理

Q7:我们的游戏中,不透明渲染在总体渲染里占比较高,主要的开销在于 MeshSkinning.Render 部分,这部分的Draw Call过高,共有65个, 请问该如何优化呢?

默认情况下Skinned Mesh是无法合并Draw Call的,从而导致Draw Call过高的问题。 我们建议尝试通过 SkinnedMeshRenderer的BakeMesh接口,将蒙皮动画转为网格序列帧,同时确保顶点属性的数目符合动态拼合的条件,从而降低这部分的Draw Call。另外,这种做法也可以降低MeshSkinning.Update以及Animator.Update的CPU耗时,只是网格序列帧会占用较大的内存,研发团队可以尝试做一个评估。

资源管理

Q8:预设中的变量,拖拽到Inspector面板和Transform.find这两种方法对加载影响是一样的吗?

对加载性能有微小的不同。Transform.Find 是可以灵活控制调用时机的,可以真正要用的时候再进行Transform.Find,这样GameObject被实例化时效率会更高一些 。但如果拖上去,GameObject被实例化时,该变量就需要进行序列化。因此,加载和实例化时两者的性能会存在一些微小的变化。

资源管理

Q9:我有一个关于AssetBundle资源加密问题。CreateFromMemory这里不推荐大规模使用,那是不是我们要放弃对一部分资源的加密?还是说有其它的解决办法?

由于CreateFromMemory的加载速度相较其他的接口而言,耗时明显增大,因此我们确实不建议大规模使用。就目前而言,除了使用CreateFromMemory,并没有其他高效直接的方法进行资源加密,因此,确实需要放弃对一部分资源的加密。同时,目前存在一些工具可以从更底层的方式来获取和导出渲染相关的资源,如纹理、网格等,因此,对于这部分的资源加密并没有十分的必要性。


资源管理

Q10:我想确认一下Shader的依赖打包问题。如果采用了依赖打包,A、B、C依赖了D,当我更新了D包时,A、B、C是否都要重新打包?反过来呢?

在使用Unity 4.x的接口时开启DeterministicAssetBundle,或者使用Unity 5.x新接口(默认强制开启DeterministicAssetBundle)时,当更新了D包,都是不需要重新打包A、B和C的。
反之,如果更新了(比如B包),那么在Unity 4.x 下依然是需要重新打D包的,而Unity 5.x新接口则会检测到D包未更新,而自动跳过其打包过程。


(九)项目资源管理 因为集体劳资协议、分包商人员使用、矩阵型项目环境,内外部报告关系及其他各种原因,项目管理团队对选择团队成员。 阅读详情

相关推荐

从Arduino IDE到Atmel Studio:ATmega328P开发的进阶之路

本文探讨了从Arduino IDE转向Atmel Studio进行ATmega328P开发的进阶路径。通过对比两者差异,详细介绍了Atmel Studio的环境配置、寄存器操作思维、烧录方法及高级调试功能,帮助开发者突破Arduino的封装限制,实现对单片机底层硬件的精细控制与性能优化,提升嵌入式开发的专业能力。

weixin_29193259的博客 127

Unity记录的优化细节5

Unity记录优化细节5

蛰伏--当你不够强大时,就不要放弃努力 2042

家庭网络中,路由器和交换机的连接顺序

它的目的是给路由器增加端口,用户访问互联网的速度比情况一要快,常用于办公网络、家庭成员多的场景。光纤入户首先连接的肯定是光猫,而在光猫的后面,是先连接交换机?还是应该接路由器呢?家庭网络中路由器和交换机的先后连接顺序。它目的是让更多的用户访问互联网。常用于一些超大型机房、网吧等。至于路由器和交换机的区别。两者之间很多功能都有兼容。但用户上网速度相对较慢。在技术日益迭代的今天。

m0_74075744的博客 1万+

Unity 性能优化四:UI耗时函数、资源加载、卸载API

1. 这里更新的是vertex 属性,比如 color、tangent、position、uv,修改recttransform的position、scale,rotation并不会导致顶点属性改变,因为顶点的position是根据pivot的偏移决定的,而改变其size、pivot、anchor,则会修改UI的transform属性,从而引发重建,还包括替换图片,更新文本等。raycast target 不用就关闭它。2. 合并的过程在子线程中实现,如果网格过于复杂,出现了主线程的等待,则耗时会被统计到。

qq_37672438的博客 3061

AI自主网络攻击技术深度解析:从LLM驱动到防御体系升级

网络安全领域正经历从自动化脚本到智能自主攻击的范式转变。其核心原理在于将大型语言模型(LLM)与自动化渗透测试框架深度融合,构建具备环境感知、决策规划和自适应能力的攻击系统。这种技术的核心价值在于实现了从预设步骤到目标驱动的质变,能自主完成信息收集、漏洞利用、横向移动等复杂攻击链。在应用场景上,它不仅能极大提升高级持续性威胁(APT)的攻击效率,也对渗透测试和红队演练技术提出了新的要求。面对此类由AI驱动的自主攻击,传统的基于签名的防御体系已显不足,必须转向以行为分析和零信任为核心的整体纵深防御。本次曝光的

weixin_34254464的博客 610

Miniconda3迁移(附图详细过程)

服务器上目录占满,想要将conda迁移到其他目录下的操作方法,详细教程。

2301_77554343的博客 6947

Unity性能优化之UGUI

问题: DrawCall OverDraw 事件检查 网格重建 解决: 1、 防止不同图集穿插,防止同个图集重叠,层次重叠会限制DrawCall合并; 少用Mask(模板测试用到); Scale = 0/Alpha Group=0,不要用alpha=0去隐藏物体或透明物体; UI的Pos.z 不等于0不会合并DrawCall; Alpha=0、Null Sprite依然会渲染; 同...

折羽 660

VMware vSphere运维管理手册

ESXi 7.0 引入了一种系统存储布局,可对大型模块和第三方组件进行灵活的分区管理和支持,同时简化了调试操作。ESXi 7.0 系统存储更改在 ESXi 7.0 之前,分区大小固定不变,除 /scratch 分区和可选 VMFS 数据存储之外,且分区号是静态的,这些限制了分区管理。在 ESXi 7.0 中,分区整合为更少且更大的可扩展分区,具体取决于所使用的引导介质及其容量。ESXi 7.0 系统存储布局包含四个分区:分区适用情况类型系统引导存储引导加载程序和 EFI 模块。FAT16。

Avenjan优快云博客 3625

Unity性能优化与分析--CPU

本文共16000字, 讲解了CPU性能优化

qq_41281201的博客 6621

基于Simulink进行微电网中DC-DC变换器的仿真建模

微电网:包括可再生能源发电设备、储能系统和负载,可以独立于大电网运行,也可以并网运行。重要性提高能源可靠性:通过本地化供电减少对外部电网的依赖。促进可再生能源利用:支持高效整合多种可再生能源。挑战多源管理:不同类型的能源产生方式各异,需设计灵活的电源管理系统。能量转换效率:需要高效的能量转换装置来确保能源的有效利用。首先明确要模拟的任务内容。设计一个能够在不同输入条件下为微电网提供稳定输出电压的DC-DC变换器。根据微电网的工作状态调整控制策略以维持最佳性能。

amy_mhd的博客 156

PCL DBSCAN密度聚类【2026最新版】

点云密度聚类的PCL代码实现,与matlab自带的密度聚类算法进行对比验证,结果一致。3万多个点能再2秒左右运行出结果,算法效率尚可。

点云侠的博客 5682

九、项目资源管理

​ 项目的实施需要投入实物资源和人力资源,人力资源的“主观能动性”对项目管理带来了挑战。

Ray丿雷的博客 1591

第十五章数据管理成熟度评估【6’】(DAMA-CDGA 2022年以后历年模拟题真题汇总,基本包含所有考点。)

第十五章数据管理成熟度评估【6’】(DAMA-CDGA 2022年以后历年模拟题真题汇总,基本包含所有考点。)

JasonH2021的博客 406

Q&A——资源管理(十)

资源管理 Q1:关于定位游戏中冗余资源引用的问题。UWA的报告中能定位到具体的引用代码么? 在Profiler只能看到ManagedStaticReferences但是具体不到引用的位置。比如Static ClassA引用一个ClassB,ClassB上引用了一个资源,就定位不出这个引用的过程。请问这种情况下有没有比较好的方法找到引用关系呢? 该问题在Unity 5.3 之前的版本

起个名字好难啊 1352

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Q&A——资源管理(十一)

资源管理 Q1:怎么去掉Mesh中的Colors属性?我把FBX里的LayerElementColor字段都删了,这个Colors还是存在。 默认情况下,在3d建模软件中并不会导出Color属性。以3ds max为例,Color通常是通过modifier添加的,因此只需要在导出前将其删除即可。另外也可以通过fbx sdk来直接对文件进行处理,但这种做法就需要查看官方的文档了。

起个名字好难啊 935

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【PMP】九、项目资源管理

实现过程 启动 规划 执行 监控 收尾 规划资源管理 估算活动资源 获取资源 建设团队 管理团队 控制资源 规划资源管理 1、定义:定义如何估算、获取、管理和利用团队以及实物资源。 2、规划资源管理的工具:数据表现(层级型、责任分配矩阵、文本型) 确保每个工...

心跳包的博客 4222

Q&A——资源管理(三)

资源管理 Q1:StreamingAssetPath 和 PersistantDataPath下可以不Load AssetBundle ,直接放资源Load吗? 这是可以的,但非常有限。因为不通过 AssetBundle 加载,只能通过 Unity 提供的有限的接口来直接加载外部资源,如通过 WWW.audioClip 直接加载 mp3文件,通过 WWW.texture 直接加载

起个名字好难啊 472

Q&A——资源管理(七)

资源管理 Q1:我想请教一下,下图这个函数中,每次我都申请了一个List temp = list();在这里存放6KB的数据,但是如果不做GC处理,这6KB是否就一直累加,直到做GC处理了才会释放掉,是这样么?如果调用次数很多,每次都调用一点点,也会推高内存占用吗? A:是的,这个6KB堆内存会随着Update的执行一直分配内存,所累积的堆内存会在GC触发时进行销毁。一般来说,研发

编程小生的专栏 884

Q&A——资源管理(六)

资源管理 Q1:请教个问题,我用Unity 5 里提供的Sprite Packer把A.png,B.png打进一张图集,在运行时我怎么方便地加载这两张图呢?使用场景:某个Image控件根据不同的条件显示A,或者显示B。 目前通常是在脚本序列化信息中保留这两个Sprite的引用,在切换时直接通过对Image.sprite进行赋值来切换。

起个名字好难啊 1200

Q&A——资源管理(十二)

资源管理 Q1:我们在做依赖打包改进,比如UIAtlas这种脚本,AssetBundle包里脚本没有做依赖,每个包里都有这个脚本,会导致Mono堆内存增大么?对于“脚本也是资产”这一点理解的不是很透彻。脚本在AssetBundle里是不会启动,但是会出现脚本丢失。本身没有做依赖打包的话脚本是冗余在AssetBundle中吧? 首先,需要说明的是,脚本本身的内容是不会被打包到Asse

起个名字好难啊 1100

【Cocos Creator UI资源管理】

ui资源管理框架

Javaigood的博客 1611

Q&A——资源管理(五)

资源管理 Q1:Unity中的SerializedFile是怎么产生的?请问用Unload(false)可以清除吗?因为读取了Bundle里面的内容后已经赋值给其他物体了。而且我把图片都打成了Bundle,然后读取出来,图片的大小应该是超过了这个SerializedFile的大小的? SerializedFile是AssetBundle加载时产生的序列化信息,一般为LoadFr

起个名字好难啊 817

Q&A——资源管理(八)

资源管理 Q1: 我使用Shader.WarmupAllShaders操作,在后续加载资源还是有CreateGPUProgram出现。(Shader都在一个AssetBundle文件中,都是常驻内存的,不会删掉)是必须使用ShaderVariantCollection来加载Shader吗? A:以上这种问题的较大可能是:Shader被打包到不同AssetBundle中了,WarmupA

编程小生的专栏 786

Q&A——资源管理(十四)

资源管理 Q1:我的游戏运行一段时间之后,已经切换到一个空场景了,然后手动调用了System.GC.Collect(); Resources.UnloadUnusedAssets();为什么还是会有这么多贴图资源被引用呢。我猜可能是由于一些脚本中的静态变量引用导致,请问有办法查出来是哪些静态变量吗? 很大可能是这些资源直接或间接被其他Container缓存了,这种情况在我们进行内存

起个名字好难啊 585
上一篇: Q&A——性能优化(二)
下一篇: Q&A——资源管理(十)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值