技术分享连载(六十一)

资源管理

Q1:Unity5.4.1中,我将需要的Shader打到一个AssetBundle包中(包含一个关联了所有Shader的Shader Variants),分别用Shader.WarmupAllShaders和ShaderVariantCollection.WarmUp两种方式进行预加载,后者耗时更少。
这里用了Standard Shader做的测试,可以看到真机上两种方式耗时差距是非常大的。 请问,确实是ShaderVariantCollection的效率更高,还是我测试方法有问题?
请输入图片描述
请输入图片描述

测试代码:

请输入图片描述
Shader的AB包里的内容:
请输入图片描述

根据官方的文档的描述,确实是ShaderVariantCollection的效率更高,详见:
https://docs.unity3d.com/Manual/OptimizingShaderLoadTime.html
因为在ShaderVariantCollection中,是可以给每个Shader添加指定的Keyword的,ShaderVariantCollection.WarmUp的调用只会对ShaderVariantCollection中指定的Keyword进行Warmup操作;而Shader.WarmupAllShaders则是对所有的Keyword全部进行Warmup操作(其中大多数很可能都不会用到)。
因此在Shader.WarmupAllShaders的文档中也提到,建议使用ShaderVariantCollection.Warmup来进行细粒度的Warmup操作,避免大量多余的Keyword被Warmup,造成严重的卡顿,大家可以参考下文:
https://docs.unity3d.com/ScriptReference/Shader.WarmupAllShaders.html

此问答来自于UWA 问答社区:https://answer.uwa4d.com/question/58fabe919db5d16c66166132
如您对该问题仍有疑问,可以转至社区进行进一步交流。


资源管理

Q2:我们在做MMO国战类游戏,因此想咨询下资源标准。我们同屏会有70~80个玩家,这种情况下主角一般控制在多少面,多少根骨骼呢?一个Boss有80多根骨骼会有问题吗?

这个需要看研发团队希望在什么样的机型上运行。假设是低端机器类似红米Note2,那么建议玩家都控制在30根骨骼,1500面以下。如果只有一个怪物80根骨骼,问题并不大,但还需要考虑场景中其他物体的使用量。

建议研发团队看一下这篇文章,这是我们半年前统计的关于MMO游戏的性能数据,相信能对MMO游戏的开发团队具有借鉴意义:《MMO移动游戏性能分析报告:渲染、UI、逻辑代码和内存需重点关注》

此问答来自于UWA 问答社区:
https://answer.uwa4d.com/question/58f614999db5d16c66166121
如您对该问题仍有疑问,可以转至社区进行进一步交流。


资源管理

Q3:我们想请教一个Unity的普适性的资源管理问题。举个例子,我们现在的一个特效Prefab包含的贴图打成AssetBundle时没有单独拆分出来,就会存在一个问题,这个特效AssetBundle会存在重复加载的问题进而导致重复的特效贴图在内存中。(针对“重复加载”说明下:我们首先通过AssetBundle出来一个Object,这个Object会缓存一段时间,在这段缓存时间过后这个Object会被Destroy掉,而需要释放的特效是通过Instantiate这个Object出来的。当这个Object过了缓存时间被destroy掉后,下次需要释放相同的特效还是通过load同样的AssetBundle进行再实例化出来,这样内存中存在两份贴图了。)

Unity中是没有这种API来提供的,一般是团队中自行做一些资源的引用计数来进行管理。频繁调用UnloadUnusedAssets是不可取的(该函数的主要作用是查找并卸载不再使用的资源。游戏场景越复杂、资源越多,该函数的开销越大,一般在300~2000 ms范围内),但可以调用UnloadAsset来释放资源。


内存管理

Q4:我们游戏现在测试出来的GC是否合理?这个分配数值可以接受吗?是否存在泄露?如果存在泄露,有没有具体到每个函数的分配详情?
请输入图片描述

研发团队可以在测试报告中查看 Mono堆内存分析报告,这里有我们对于Mono堆内存的详细分析,包括 堆内存具体分配 和 堆内存泄露分析 两大功能,如下图所示。
请输入图片描述
请输入链接描述
就研发团队目前的数据报告来看,其堆内存分配其实是很小的,之所以有目前的堆内存调用,推测是手动调用GC的频率较高所致,研发团队可以就此再进行进一步的检测。





原文出处:侑虎科技
本文作者:admin
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

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

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

相关文章

SNF软件开发机器人-子系统-导出-导入功能-多人合作时这个功能经常用到

导出 导出可以将资源表和子系统导出并形成一个json文件。 1.效果展示: 2.使用说明: 点击导出按钮后会弹出一个导出页面。页面的左侧可以选择功能,右侧可以选择资源表,选择功能的同时右侧中功能所需的资源表也会被选择。当功能之间…

基于物理的渲染-用真实的环境光照亮物体

目前,在游戏引擎中用于照亮物体的光源非常丰富。其中,比较常用的有:平行方向光、点光源、聚光灯以及体积光等,但它们都是对真实光源的近似,并不能很好地模拟真实世界中的复杂光照情况。为了增加光照效果的真实感&#…

克隆CentOS6虚拟机eth0被修改为eth1如何修改eth0

2019独角兽企业重金招聘Python工程师标准>>> 直接修改 /etc/sysconfig/network-script/ifcfg-eth0 删掉UUID HWADDR 配置静态地址 然后: rm -rf  /etc/udev/rules.d/70-persistent-net.rules然后reboot 转载于:https://my.oschina.net/hengbao666/blog/…

如何高效的编写与同步博客 (.NET Core 小工具实现)

系列目录 [如何高效的编写与同步博客(一)- 编写 ]如何高效的编写与同步博客(二)- 快速发布到多个渠道一.前言 写博客,可以带给我们很多好处,比如可以让我们结识更多志同道合的人;在写博客过程中…

mxf高速发展和数字电影母版制作技术

1.实现MXF的诺言——格式只是迈向可互操作内容管理的一步 当把元数据加到数字内容的MXF(素材交换格式)标准通过EBU于2002年推出时,当时曾预期广播机构将会迅速无缝地管理其所有来自不同厂家的制作、后期和分配系统上的数字内容。 六年过…

Python基础-变量作用域

1.函数作用域介绍 函数作用域 Python中函数作用域分为4种情况: L:local,局部作用域,即函数中定义的变量:E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用…

php爱奇艺筛选标签,三种排序 快速筛选好视频_软件资讯技巧应用-中关村在线

使用在线视频播放器来观看视频,通常有可以分为有目标和无目标两种。即是用户如果定点找一部视频和随意查看喜欢的视频,这两种模式往往查找视频的方法也是不一样的。我们这里要和大家讲解的是,用户在没有目标视频的情况下,怎样更快…

Flask项目--发送短信验证码

1.后端代码 具体代码如下&#xff1a; # GET /api/v1.0/sms_codes/<mobile>?image_codexxxx&image_code_idxxxx api.route("/sms_codes/<re(r1[34578]\d{9}):mobile>") def get_sms_code(mobile):"""获取短信验证码""&q…

Jenkins系列之五——通过Publish over SSH插件实现远程部署

Jenkins通过Publish over SSH插件实现远程部署 步凑一、配置ssh免秘钥登录 部署详情地址&#xff1a;http://www.cnblogs.com/Dev0ps/p/8259099.html 步凑二、安装Publish over SSH插件 插…

php柱状图实现年龄分布,考官雅思写作小作文满分范文 柱状图:年龄分布

考官雅思写作小作文满分范文 柱状图:年龄分布2017年06月12日14:48 来源&#xff1a;小站教育作者&#xff1a;小站雅思编辑参与(40)阅读(63981)摘要&#xff1a;为大家分享前考官simon演示的9分雅思小作文。考官亲笔&#xff0c;用最正统的4段式写作&#xff0c;本文主题-柱状图…

Flask项目--注册

0.效果展示 1.后端代码 # coding:utf-8from . import api from flask import request, jsonify, current_app, session from ihome.utils.response_code import RET from ihome import redis_store, db, constants from ihome.models import User from sqlalchemy.exc import I…

图片处理

//图片处理public function img(){//读取图片$imageImage::open(./img/02.jpg);//dump($image);//获取图片的信息// 返回图片的宽度$width $image->width();// 返回图片的高度$height $image->height();// 返回图片的类型$type $image->type();// 返回图片的mime类…

数据流图 系统流程图 程序流程图 系统结构图联系与区别

1.数据流图&#xff08;Data Flow Diagram&#xff09;&#xff0c;简称DFD&#xff0c;它从数据传递和加工角度&#xff0c;以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程&#xff0c;是结构化系统分析方法的主要表达工具及用于表示软件模型的一种…

迄今为止最快的 JSON 序列化工具 Jil

2019独角兽企业重金招聘Python工程师标准>>> 迄今为止最快的 JSON 序列化工具 Jil https://github.com/kevin-montrose/Jil 转载于:https://my.oschina.net/xainghu/blog/1621365

mysql数据库访问编程,mysql 连接数据库

1、首先启动mysql 并链接数据 小意思吧&#xff01;都会了是吧mysql -uroot -p //连接数据net start mysql // 启动mysql2、查询当前 服务器里有哪些数据show databases;3、创建数据库create database jddb -------数据库名字(jddb)4、 使用数据库use jddb;5、查询当前数据库下…

Flsak爱家租房--个人信息

0.页面展示效果 1.设置用户头像–后端代码 # coding:utf-8from . import api from ihome.utils.commons import login_required from flask import g, current_app, jsonify, request, session from ihome.utils.response_code import RET from ihome.utils.image_storage impo…

C++ string::size_type

从逻辑上讲&#xff0c;size()成员函数应该似乎返回整型数值&#xff0c;但事实上&#xff0c;size操作返回是string::size_type类型的值。string类类型和其他许多库类型都定义了一些配套类型(companion type)。通过这些配套类型&#xff0c;库函数的使用就与机器无关(machine-…