关于切换场景加载耗时的优化问题

news2024/11/27 20:28:34

1)关于切换场景加载耗时的优化问题
​2)SpriteAtlas打包AssetBundle后运行时内存大小和什么有关系
3)手机上使用MRT的限制和兼容性
4)如何控制粒子系统组件数量的上限


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

Loading

Q:在切场景时,为什么调整Application.backgroundLoadingPriority为High可以减少加载耗时呢?

A:Application.backgroundLoadingPriority这个API会限制主线程的集成的时间,默认设置是ThreadPriority.BelowNormal,也就是每一帧执行主线程集成的操作耗时不能超过4毫秒,这将会导致每一帧剩余的时间用于等待或者渲染,而这些等待和渲染的时间都是无意义的耗时。如果把这个设置改为ThreadPriority.High,那么每一帧执行主线程集成的操作耗时可以增加到50毫秒,大大减少了所需要的帧数。

这里主线程的集成时间体现在函数Application.Integrate Assets in Background上面,它会受到加载Texture、Mesh的Texture.AwakeFromLoad、Mesh.AwakeFromLoad的影响,另外对于比较复杂的Prefab(父子节点多,层数多)需要进行拼装,耗时也会体现在这个函数当中。

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


AssetBundle

Q:SpriteAtlas打包AssetBundle后运行时内存大小和什么有关系?明明只有2张Atlas,2个纹理只有6MB,最终AssetBundle的内存却达到11.7MB。

A:运行时AssetBundle大小会受到打包Sprite数量的影响,打包了1700个Sprite的情况下AssetBundle内存11.7MB。

测试了同样大小的SpriteAtlas,打包了6个1024*1024大小的Sprite,AssetBundle大小却只有4.9KB。

感谢宗卉轩@UWA问答社区提供了回答,


Rendering

Q:手机上使用MRT有什么限制吗,兼容性如何?

A:在支持OpenGL ES 3.0的手机上就支持MRT,可参考:
What's New in OpenGL ES 3.0 | Introduction to OpenGL ES 3.0 | InformIT
https://registry.khronos.org/OpenGL/specs/es/3.0/es_spec_3.0.pdf

另外实测过,在红米4X这样非常低端的手机上,MRT也是可以正常运行的。红米4X的GPU是Adreno 505。

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


Rendering

Q:项目Overdraw有点高,我们想做一个与MMO游戏里同屏角色数量上限类似的,粒子系统上限的功能。

也就是低端分档下,当粒子数量达到某个值以后,就不再往画面里画新的粒子了。但只对特效Prefab数量做限制还是比较模糊,毕竟不同特效的粒子数量不同,所以想精确到播放状态的粒子组件数量。

A1:用Find肯定很耗时,尽量用逻辑做。比如,粒子系统一般都做缓存池管理,可以直接把相关逻辑写在这里:做一个计数器C,某个特效E要实例化或出池时,同时传入它的子粒子数量A(提前配置好),加给C;入池再减掉A;对C作监控看是否在某个值内,否则停止所有实例化和出池操作。同理,给每个特效E挂一个触发器脚本,激活或隐藏的时候把子粒子数量A传给写在某处逻辑的计数器C即可。

另外实际做的时候,还可以给不同的粒子特效加上不同的计算影响系数,这样可以让某些特效(比如多人游戏中玩家角色的技能)出现的概率更高一些,而其他特效(其他玩家的技能)显示得少一些。

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

A2:提个思路,对于每一个特效Prefab,可以离线给这个Prefab做一个评分。对于场上存在的特效Prefab,记录总的特效评分,可以设置一个总的上限评分,超过就不显示。

这样问题就抛到了离线分析每个特戏Prefab评分上,评分参考维度可以参考:特效粒子发射器数量、特效overdraw、特效Batches、特效内存等等。

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

封面图来源于网络


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

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

 

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

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

相关文章

大数据-玩转数据-深入浅出K8S

一、K8S和Docker的比较 Docker 是一个开源的、轻量级的容器引擎,和 VMware 虚拟机相比,Docker 使用容器承载应用程序,而不使用操作系统,所以它的开销很少,性能很高。但是,Docker 对应用程序的隔离不如虚拟…

SO_REUSEPORT socket选项介绍以及在nginx上的配置

SO_REUSEPORT (reuseport) 是网络的一个选项设置: 它能开启内核功能:网络链接分配 内核负载均衡,该功能允许多个进程/线程 bind/listen 相同的 IP/PORT,提升了新链接的分配性能。reuseport 也是内核解决 惊群问题 的优秀方案&…

CoSENT:比sentence bert更好的向量表征

本文是对https://spaces.ac.cn/archives/8847文章的总结 有监督的文本表征主流方案是sentence bert,虽然sentence BERT效果还行,但是存在训练和预测不一致的问题,而一些文章也指出而如果直接优化预测目标cos值,效果往往特别差&…

方寸间联结世界,中国直播电商如何诠释“人类命运共同体”?

十几个人凝神屏息地盯着屏幕,仿佛静止了一般,眼睛一眨不眨,生怕错过了什么。直到听到屏幕另一端终于有了动静,悬在他们心里的石头才落下——“谢谢大家的支持,全部没有了。” 话音未落,这边已爆发了欢呼声…

只工作,不上班,「远程办公」是不是理想的工作方式?

在我们90后眼中,上班和工作是两回事。准确来说。上班是为别人做事,而工作是为自己。 圆桌派有一期的话题是“不想工作怎么破?”当时,几位嘉宾说:“不是不想工作,是不想上班”,“周围很多年轻人…

【linux】之 kubernetes安装

一、容器编排工具 docker machinedocker composedocker swarm docker servicedocker stack kubernetesmesosmarathon 二、PaaS平台 OpenShiftRancher 三、认识kubernetes 官方网址 https://kubernetes.io/ https://kubernetes.io/zh/ 中文社区 http://docs.kubernetes.org…

libco 宏分析

// 下面是从libco中导出的宏 #include <iostream> using namespace std;/*以下是计算参数的个数&#xff0c;最多支持7个参数 */ #define comac_get_args_cnt( ... ) comac_arg_n( __VA_ARGS__ ) #define comac_arg_n( _0,_1,_2,_3,_4,_5,_6,_7,N,...) N #define comac_a…

完整的PCB生产工艺到底是怎样的?华秋告诉你

前面&#xff0c;与朋友们分享了一些关于PCB生产工艺的事情。 有的朋友看了后非常感兴趣&#xff0c;私信说——现在的各种PCB资料满天飞&#xff0c;经常彼此间相互不一致&#xff0c;甚至对立&#xff0c;能给我们再讲讲&#xff0c;完整的PCB生产工艺到底是怎样的吗&#x…

Java 8函数式编程

函数式接口 一个接口中&#xff0c;有且只有一个抽象方法&#xff0c;这个接口就叫做函数式接口。常常使用FunctionalInterface注解作为编译校验。满足函数式接口的要求&#xff0c;才能校验通过&#xff0c;否则会在校验阶段失败。 接口中有且只能有一个抽象方法&#xff0c;…

STM32F4 | 外部中断实验

文章目录一、STM32F4 外部中断简介二、硬件设计三、软件设计四、实验现象五、STM32CubeMX 配置外部中断本章我们将介绍如何将 STM32F429 的 IO 口作为外部中断输入。一、STM32F4 外部中断简介 这里首先介绍STM32F4 IO 口中断的一些基础概念。STM32F4 的每个 IO 都可以作为外部…

实验五图形用户界面编程

目录 一、目的与任务 二、内容、要求与安排方式 三、实验设备 四、实验步骤 一、目的与任务 掌握常用事件及其处理模型&#xff1b;掌握常用GUI控制组件的使用及其事件的处理&#xff1b;掌握菜单的使用以及对话框的使用。 二、内容、要求与安排方式 1、实验内容与要求&…

SpringCloud系列(五)Nacos 注册中心配置管理的设置及使用

介绍几种 Nacos 常用的配置, 如统一配置管理的步骤, 如何配置自动刷新及多环境配置优先级问题. Nacos 配置管理⚽️ 统一配置管理⚽️⚽️配置自动刷新⚽️⚽️⚽️ 多环境配置优先级⚽️ 统一配置管理 步骤一: 在 Nacos 中添加配置信息, 如添加时间格式的配置内容; 步骤二: …

Ribbon实战与原理剖析

一、ribbon概述 1、ribbon简介 目前主流的负载方案分为以下两种&#xff1a; 集中式负载均衡&#xff0c;在消费者和服务提供方中间使用独立的代理方式进行负载&#xff0c;有硬件的&#xff08;比如 F5&#xff09;&#xff0c;也有软件的&#xff08;比如 Nginx&#xff0…

读写锁的学习与实验

目录 目录 1&#xff0c;场景 2&#xff0c;接口 3&#xff0c;场景模拟 1&#xff0c;场景 有一种场景&#xff0c;读者多&#xff0c;写者少&#xff0c;绝大多数的情况下我们都是在进行读取而不修改&#xff0c;只有少数的情况下我们才会修改。 场景一&#xff1a;比如…

解决jenkins构建失败,空间不足问题

随着构建次数过多&#xff0c;之后jenkins构建会出现空间不足的问题&#xff0c;解决方式如下&#xff1a; 目录 1.配置时&#xff0c;去除旧的构建任务 2.使用脚本&#xff0c;删除历史构建 3.清理磁盘空间 4.重新加载服务器节点 1.配置时&#xff0c;去除旧的构建任务 2…

计算机网络(自顶向下)学习笔记——路由选择算法

第五章—路由选择算法 5.1、路由的概念 路由:按照某种指标(传输延迟,所经过的站点数目等)找到一条 从源节点到目标节点的较好路径 较好路径: 按照某种指标较小的路径指标:站数, 延迟,费用,队列长度等, 或者是一些单纯指标的加权平均采用什么样的指标,表示网络使用者希望网络…

m基于优化算法的多车辆的路径规划matlab仿真,对比GA,PSO以及烟花算法

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 路径规划是运动规划的主要研究内容之一。运动规划由路径规划和轨迹规划组成&#xff0c;连接起点位置和终点位置的序列点或曲线称之为路径&#xff0c;构成路径的策略称之为路径规划。路径规划在…

微软12月多个安全漏洞修复解决方案

安全狗应急响应中心监测到&#xff0c;微软发布了2022年12月份安全更新&#xff0c;事件等级&#xff1a;严重&#xff0c;事件评分&#xff1a;10.0。此次安全更新发布了52个漏洞的补丁&#xff0c;主要覆盖了以下组件&#xff1a;Azure; Office and Office Components; SysIn…

提高电网的稳态稳定性(Matlab代码实现)

目录 1 概述 2 稳态稳定性分析 2.1 系统模型 2.2 稳态稳定性 2.3 问题说明 3 仿真结果 4 一点小智慧 5 Matlab代码实现 1 概述 随着电力系统的复杂性和规模的增加&#xff0c;电力系统的有效控制变得越来越困难。我们提出了一种自动控制策略&#xff0c;该策略基于通过…

如何使用typeScript实现贪吃蛇游戏?

1.配置文件 配置文件写过一次之后&#xff0c;可以复制粘贴使用&#xff0c;修改部分细节就可以了。 package.json {"name": "snake","version": "1.0.0","description": "","main": "index.js&q…