技术分享连载(二十七)-阿里云开发者社区

开发者社区> 人工智能> 正文

技术分享连载(二十七)

简介:

资源管理

Q1:我在UWA上提交了资源检测,资源打的是依赖包,报告显示Default—Particle这个资源存在大量冗余,这个是正常的吗?

请输入图片描述

Default—Particle 这个是粒子系统的默认资源。如果使用的是默认的粒子系统,没有对Material进行修改,且每个粒子系统都是打一个AssetBundle文件的话,那么该冗余问题是正常的。对此,我们建议开发团队把下图中默认的Material换成自己的资源,不使用Built-in资源,这样通过依赖关系打包,就不会出现该资源冗余的问题了。
请输入图片描述


资源管理

Q2:从点击应用到出现游戏画面,这个时间长短是不是和Resource目录大小有关系?

从点击应用到首次出现应用画面,其加载时间主要与两方面相关:

  1. Resources文件夹中的资源数量。在游戏启动时,Unity引擎会为Resources文件夹下的资源建立一个查找树来存放与其对应的索引,便于后续资源的加载。一般来说,Resouces文件夹下资源数量越多,其构建时间越长,应用的启动也就越慢;

  2. 首场景的资源加载和相关代码的初始化工作。如果首场景的资源量较多,其脚本初始化的任务较重,则应用的启动时间也会越慢。


性能优化

Q3:Unity 的 TimeManager Time默认是0.02。我们有个NetConnectionManager脚本使用了FixedUpdate,这个脚本是用来解析网络协议的,我尝试修改Time的值为0.01 ,感觉游戏似乎提高了运行的效率,具体表现在减少了一些卡顿问题的延迟,提高了调用的频率,但是发热和耗电问题似乎会变得严重。关于TimeManager设置,你们有什么建议吗?

将TimeManager中的Time从0.02降低到0.01,其本质是将FixedUpdate的调用频率从默认的50次/秒提升为100次/秒。这一操作确实很可能带来画面表现的流畅感,但同样增加了一倍的网络IO,其本身会占用更大的性能开销,从而造成设备发热。一般来说,除对于网络同步非常高的游戏外,TimeManager中Time按照默认的0.02设置即可。


内存管理

Q4:有没有办法可以减少游戏中Mono内存占用的大小?我现在读完游戏表以后就占用了60MB,我看其他游戏读完配置表也才10MB左右,这个是怎么做到的呀?

如果刚进入游戏后,Mono堆内存就达到了60MB,那么你的游戏项目极有可能在一开始加载了一个非常大的配置表。对此,我们建议出现该问题的研发团队对配置文件的初始加载进行详细检测,查看是否可以精简配置文件信息。如果不行,则尝试将配置文件拆散,按需加载,从而降低Mono内存上升过快问题发生的概率。


资源管理

Q5:我用的是NGUI,本来已经打包图集了,输出时候是不是就不用理会那些原始2D Sprite图 ?粒子贴图需要Packing Tag吗?

在NGUI中使用Atlas后,原纹理是不需要进行打包或进行其他特殊处理的,因为理论上这些资源在运行时已不再需要。粒子系统所使用的纹理并不是Sprite类型的,因此不需要设置Packing Tag。


资源管理

Q6:请教个问题,我用Unity 5 里提供的Sprite Packer把A.png,B.png打进一张图集,在运行时我怎么方便地加载这两张图呢?使用场景:某个Image控件根据不同的条件显示A,或者显示B。

目前通常是在脚本序列化信息中保留这两个Sprite的引用,在切换时直接通过对Image.sprite进行赋值来切换。

今天的分享就到这里。





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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
人工智能
使用钉钉扫一扫加入圈子
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

其他文章