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

Unity渲染基础——Mesh原理 这片文章其实是综合了我之前看过的几篇文章,然后汇总了一下。参看文章贴在文末。涉猎到相关的内容是之前学习换装的时候,作者将skinmeshrenderer中的mesh数据显示到了ui上,从而实现了在UI上显示模型的需求。 Unity中想要显示一个3D模式,必须要知道该模式的形状,这个形状其实就是mesh数据。有了mesh数据后,再通过Mesh Filter组件将mesh... 阅读详情

资源管理

Q1:如下图,在UWA性能报告中,我们发现Camera.Render下CreateVBO的开销较高,请问这个是如何引起的?
请输入图片描述

从图中可以看出,Mesh.CreateVBO是在半透明渲染的开销之下,说明这是半透明物体的渲染引起的。在我们目前测评过的项目中,仅使用NGUI的项目会在此处出现不同程度的CreateVBO的CPU开销。对此,建议研发团队首先确认其UI系统是否使用的是NGUI插件,如果是,则当前NGUI的CPU占用很可能较高,特别是UIPanel.LateUpdate的CPU占用较高。研发团队可在UWA性能测评报告中的UI模块性能页面看到。究其原因,是由于UI Mesh在频繁的重建,对于重建的Mesh,Unity引擎会将其重新传入GPU端进行渲染,这部分开销主要体现在Mesh.CreateVBO和Mesh.DrawVBO中。因此,如果你的项目中使用NGUI插件,并且半透明渲染下Mesh.CreateVBO的开销较高,那么需要研发团队对UI模块进行大力优化了。


资源管理

Q2:FK & Statemachine 状态机占用时间比较高,是否有优化的方法呢?

影响该项的因素较多,一般为:

  1. 是否开启Optimize GameObjects选项,如果没有,建议开启;
  2. 场景中Active的GameObject(使用并开启了Animator组件的)是否较多,数量越多,则该项目开销越高;
  3. GameObject的骨骼数越多、AnimationClip的采样次数越多,则该项开销也越高。
    因此,建议研发团队可从以上三种情况入手来优化FK & Statemachine的开销。

资源管理

Q3:伤害检测、还有靠近采集物品时触发可以采集的提示箭头等,我们都使用了碰撞,请问如果不使用碰撞,可以用什么方法代替呢?

使用Trigger也是较为合理的做法,如果想替代,可尝试根据距离、动画运行的时间点来进行判断。


资源管理

Q4:Fixed Timestamp的大小设置多少合理,对物理的开销影响大么?

默认情况下为0.02s,即每20ms会更新一下物理系统和FixedUpdate函数,因此它对物理的开销影响很大。具体设置没有统一的方案,需要根据自身游戏类型和物理系统的使用情况而定。如果项目中对物理系统的使用较小,那么可尝试将该项设置为0.033s,甚至为0.05s,然后在真机上查看这样物理模拟效果是否可以接受。

资源管理

Q5:对Prefab资源的卸载、预览英雄模块、需要卸载英雄角色的资源、动画和材质都可以通过Resources.UnloadAsset(xxx)来顶点清除,而Prefab不行,Prefab 只能用 Destroy + Resouces.UnloadUnused()卸载吗?

Prefab如果想要单独卸载,只能使用DestroyImmediate来实现。同时,考虑到Prefab本身已经是很小的一个壳了,对内存的影响非常小,一般情况下是在切换场景的时候一起释放的。


资源管理

Q6:如果我用WWW加载了一个AssetBundle,创建了一块WebStream内存。这时候我用另一个东西保存这个AssetBundle的引用,然后用WWW给Dispose了,那么这块WebStream内存会释放掉么?

如果仅是www.dispose,但是AssetBundle引用依然保留的话,那么WebStream是不会释放的。WebStream存在两个引用,一个是www对象,一个是加载出来的AssetBundle。仅这两个引用全部消除时,WebStream才会被Unity引擎回收,具体说明可见之前的技术文章:Unity AssetBundle内存管理机制详解。


资源管理

Q7:NGUI的UIEventListener中的OnPress与UIButton的Press状态不能对应上。具体情况是我点击某个按钮并且按住不放,UIButton处于Press状态,然后移出了Button的范围,UIButton的状态变回了Normal,而UIEventListener中的OnPress并没有监听到,必须松开点击才能监听到。它们的Press状态切换有什么不一样呢?

理论上UIButton的OnPress和UIEventListener的OnPress是在相同时间点触发的,即手指按下和手指抬起这两个时间点上。而手指在按住状态下移开按钮时, UIButton的状态会变为Normal,这是因为其响应了OnHover的消息。因此如果要模拟UIButton的行为,至少要配合使用OnPress和OnHover两个消息。


资源管理

Q8:关于UI的Image组件的Sprite剪裁显示问题。因为Image组件上面有ImageType为Filled的选项,通过这个东西可以实现对UI的各种奇妙的显示。因为Mask组件会造成大量的Batches,单独做图会造成算是冗余内存和包体开销,那写个自定义继承Image的组件把这个效果给实现了,按道理是没有问题的,而且在翻看UGUI源代码的时候,也找到了相关片段:
0.png
请输入图片描述
目前对我来说有两个疑问:
1. 假如,我只是单单的想把方形的内容显示成圆形的内容,光靠目前的属性、参数等,能否用一套算法把它算成圆形的呢?
2. 假如说上面的第一个假设是OK的,也假设剪裁成圆形的算法效率也是还行的,那么最终的性能开销是否值得?

对于提问中所提的需求而言,这是一种有意义的做法。即,通过多边形拼成特定形状来避免Mask组件的使用和UI资源的冗余。而对于圆形,由于需要通过多边形来近似地拼出,通常就需要生成较多的顶点数。因此特别需要注意的是:尽可能确保该UI元素是处于“静态”(不会频繁地出现变化的UI元素)的UIPanel中,因为顶点数较多的UI元素会对UIPanel的网格更新带来明显的开销(比如文字的outline效果)。


资源管理

Q9:我发现如果不调用UnloadUnUsedAssets这个函数,则无法销毁通过Instantiate实例化出来的材质(包括纹理)。如果我尝试用Resouces.UnloadAsset来卸载挂在GameObject上的实例化材质, 则会闪退,请问这种情况该如何解决呢?

如果想要直接销毁通过Instantiate实例化出来的材质、纹理等资源,则只能使用DestroyImmediate来进行销毁。研发团队可以参考NGUI中UI Draw Call组件里对动态材质的处理,来加深对动态创建以及销毁的理解。

资源管理

Q10:常用资源类型网格、材质、贴图、动画都是引用或复制+引用的方式被使用,对于那些被引用的资源,需要等引用者不再引用了才能使用Resources.UnloadAsset吗?常用的资源几乎都是引用或引用+复制的关系,所以我对这个接口的理解是用处不大,请问大家是如何使用Resources.UnloadAsset这个接口呢?
请输入图片描述

是的,一般来说,Resources.UnloadAsset比较适合于在场景中动态释放一些不常使用的资源(比如特殊剧情的资源、音频等等),而对于频繁使用或者需要常驻内存的资源则不适用。使用Resources.UnloadAsset的好处是降低场景切换时的Resources.UnloadUnusedAssets的计算压力,减少不必要的UnusedAssets的查找和检测耗时。


【高项】第十三章 项目资源管理 项目团队是执行项目工作,以实现项目目标的一组人员,由为了完成项目而承担不同角色与职责的人员组成。项目团队成员可能具备不同的技能,可能是全职的或兼职的,也可能随项目进展而增加或减少。尽管项目团队成员被分派了特定的角色和职责,让他们全员参与项目规划和决策仍是有益的。团队成员在规划阶段就参与进来,既可使他们对项目规划工作贡献专业技能,又可以增强他们对项目的责任感。项目资源管理过程包括:(1)规划资源管理:定义如何估算、获取、管理和利用实物以及团队项目资源。 阅读详情

相关推荐

实战指南:如何用Kamailio+FreeSWITCH搭建高并发企业通信系统(附配置模板)

本文提供了一份实战指南,详细介绍了如何利用Kamailio与FreeSWITCH构建高并发企业通信系统。通过将Kamailio作为高性能SIP信令平面处理路由与负载均衡,FreeSWITCH作为媒体与应用平面负责通话与业务逻辑,实现信令与媒体分离的电信级架构。文章深入解析了架构设计、核心配置、集群部署与性能优化,并附有配置模板,旨在帮助企业构建可水平扩展、高可用的通信解决方案。

dell8的博客 364

计算机网络里面的arp是什么,什么是ARP 协议,ARP 工作原理-电脑自学网

ARP 协议(Address Resolution Protocol,地址解析协议)的主要作用是通过目标设备的 IP 地址,查询目标设备的 MAC 地址,以保证通信的顺利进行。ARP 协议将局域网中的 32 位 IP 地址转换为对应的 48 位物理地址,即网卡的 MAC 地址,如 IP 地址是192.168.0.10,而网卡 MAC 地址为 00-1B-7C-17-B0-79,整个转换过程是一台主...

weixin_39891158的博客 1494

【鸿蒙南向开发】OpenHarmony——分布式数据对象之功能实践

通过本文的学习可了解到分布式数据对象的主要接口、大致调用方法和功能实现等。结合对应内容,可以进一步对分布式数据对象同步机制做深度学习。下一步,(1) 着重理解同步组网的构建原理。(2) 着重理解同步组网内,监听change和status变化的实现。●如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:●关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。

HarmonyOS_666的博客 1092

Unity UI模块优化(2.优化渲染开销)

参考链接:https://blog.uwa4d.com/archives/1875.html,详情请点击链接查看UWA的视频解析,尊重UWA版权。本文为个人看视频学习整理笔记,同视频有删减。降低界面的渲染开销1.Profiling 查看当前UI渲染开销UI报告中定位渲染开销: (注:开了多线程渲染后,渲染的开销都藏在子线程里,基本上很难定位。所以在优化渲染开销时,都建立先切换成非多线程渲染然后再优

鳄鱼泪的博客 2236

SpringAi 通过大模型来实现调用自己的Api

摘要 本文介绍了如何利用Spring AI的Tools机制扩展大模型能力,实现业务系统集成。通过@Tool和@ToolParam注解定义工具方法,将订单查询和关闭功能暴露给大模型调用。关键实现包括:1)使用详细描述标注工具方法和参数;2)在ChatClient中注册工具服务;3)集成对话记忆保持上下文。该方法使AI具备操作业务系统的能力,形成"认知-决策-执行"闭环,大幅提升了模型在实际业务场景中的应用价值。

又要搬砖了 838

现代密码学5.3--Hash and MAC

现代密码学5.3--Hash and MAC 博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。 第二章定义了完美安全及其对应的密码方案“一次一密”, 第三章介绍了多种安全定义 3.1-3.3 计算安全,PRG和基于PRG构造的满足计算安全的密码方案; 3.4-3.5 CPA安全,PRF和基于PRF构

qq_41545715的博客 687

技术分享连载(四十六)

精选5个性能优化问题,建议阅读时间15分钟,认真读完必有收获。如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。 UWA QQ群:465082844

UWA—简单优化,优化简单! 427

西门子S7-200 SMART控制步进电机(二)

目录 一、开环运动控制方法 二、运动轴概述 三、配置运动控制向导 一、开环运动控制方法 S7-200 SMART CPU提供三种开环运动控制的方法: 1、脉冲宽度调制(PWM):内置于CPU中,用于速度、位置或占空比的控制 2、脉冲串输出(PTO):内置于CPU中,用于指定长度脉冲或指定距离的控制 3、运动轴:内置于CPU总,用于速度和位置的控制。本文所讲的就是通过运动轴实现步进电机的运动控制。 SR20和ST20 CP...

qq_43134642的博客 2万+

总体性能——渲染模块性能

上述图例中,不透明渲染开销高,对应的画面为打斗画面; 半透明物体的渲染:   整个半透明的渲染,包括树、草、UI;   如果使用的是NGUI,看下Mesh.CreateVBO是不是很高,因为有时候会达到3%、5%甚至百分之十几;如果比较高,说明NGUI出现问题,因为这块都是有UIPanel.LateUpdate引起的;说明NGUI在不停

起个名字好难啊 3417

AI绘画与医疗可视化:用AI生成医学插图的实践

医疗可视化是医学教育、临床沟通和学术研究的核心工具。传统医学插图依赖手工绘制或专业3D建模,存在制作周期长、成本高、更新迭代慢等问题。随着深度学习技术的发展,AI绘画工具(如Stable Diffusion、DALL-E)展现出强大的图像生成能力,但医疗领域对插图的解剖准确性、标注规范性和语义完整性有极高要求,通用AI模型难以直接应用。本文聚焦AI技术与医疗领域的交叉创新,系统阐述如何通过数据预处理、模型定制化训练和后处理校验,构建符合医疗标准的插图生成系统。

大模型应用工坊 1788

YOLO26魔改神技:YOLO26引入SimAM(无参注意力):不增加网络参数的3D能量函数提点黑科技

文章摘要 2026年YOLO26模型发布引发边缘计算革命,但特定场景精度不足问题催生注意力机制改进需求。本文聚焦无参数注意力机制SimAM,基于神经科学理论通过3D能量函数直接计算神经元权重,实现零参数量提升模型性能。文章深度解析YOLO26四大创新架构,对比SimAM与传统注意力机制差异,并探讨其在YOLO26中的集成方案。研究显示,SimAM在不增加模型体积前提下显著提升mAP指标,特别适合边缘端部署。全文涵盖架构设计、代码实现、竞品对比、部署方案等维度,为轻量化视觉模型优化提供系统解决方案。

ZDQ58818的博客 274

软考-高项,知识点一览十三 资源管理

软考-高项,知识点一览十三 资源管理

u010059939的专栏 1256

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

HAWQ 技术解析(十三) —— 资源管理

HAWQ 如何管理资源、资源管理器配置最佳实践、独立资源管理器、整合YARN、资源队列层次、查询资源管理器状态

wzy0623的专栏 7677

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

第十三章 项目资源管理

项目资源管理包括识别、获取和管理所需资源以成功完成项目的各个过程项目资源包括实物资源和团队资源。项目团队:是执行项目工作,以实现项目目标的一组人员。项目管理团队:是直接参与项目管理活动的项目团队成员,负责项目管理和领导活动。项目管理团队也称核心团队或领导团队。项目经理:是有执行组织委派,领导团队实现项目目标的个人。项目经理既是项目团队的领导者哟苏hi项目团队的管理者。领导者的工作主要涉及三个方面:确定方向、统一思想、激励和鼓舞。管理者负责某件事情的管理或实现某个目标。

qq_42020405的博客 1043

十三、项目资源管理

内容来源:信息系统项目管理师教程 (第4版)文章内容主要为第4版教程的核心重点内容。

weixin_51369125的博客 381

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

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

起个名字好难啊 1352

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

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

起个名字好难啊 935

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

高项第十三章——项目资源管理

高项第十三章——项目资源管理

keven2840的博客 931

【Cocos Creator UI资源管理】

ui资源管理框架

Javaigood的博客 1611

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

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

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值