QA——资源管理(三)
资源管理
Q1:StreamingAssetPath 和 PersistantDataPath下可以不Load AssetBundle ,直接放资源Load吗?
这是可以的,但非常有限。因为不通过 AssetBundle 加载,只能通过 Unity 提供的有限的接口来直接加载外部资源,如通过 WWW.audioClip 直接加载 mp3文件,通过 WWW.texture 直接加载 jpg 文件等。由于不是内部资源格式,其加载效率通常较低,jpg 还涉及软解操作非常耗时。因此一般情况下我们都不建议通过这种方式来加载资源。
资源管理
Q2:我们的动画是放在FBX文件里的(如下图)
这样做导致打包的时候把一些无用的文件也打进AssetBundle包里了,实际上我们只想使用最后这个动画文件。但在编辑器里选中FBX文件里的动画文件时却没有AssetLabels这个窗口,设置不了AssetBundle Name。
是不是只能用代码设置?还是意味着不能设置AssetBundle Name,只能把动画文件提取出来,类似下图这样单独的一个文件?
在Unity 5.x 的打包机制下确实无法手动为 FBX 下的 Mesh 或 AnimationClip 单独资源设置 AssetBundle Name。因此,如果需要将这部分资源抽出来作为依赖包,目前确实就需要先通过脚本将这部分资源提取出来了。
资源管理
Q3:我想要在Editor下批量地对Animator Controller文件中每一个的State里的Animation Clip进行替换,但好像没有看到 Unity引擎有提供类似的API,只提供了能在Runtime时进行替换的方法,类似下图:
我现在想要达到的目地是在Editor下写一个批量替换Animation Clip的插件,请问下Unity引擎是否有提供这样的接口呢?
在Unity 5.x 中已有一套完整且稳定的 API 可以访问、修改和创建 Animator 中的任何元素。其命名空间是在 UnityEditor.Animations 下,以下Blog 中有一个简单的例子是通过脚本创建一个 AnimatorController 以及其中的各种属性和参数。http://blogs.unity3d.com/2014/06/26/shiny-new-animation-features-in-unity-5-0/
另外,如果需要修改Animation Clip,可以直接修改一个 AnimationState 的 Motion 属性。 Animation Clip可以继承自 Motion。
资源管理
Q4:我用UGUI做的一个界面中有一个背景图片,游戏中没有做任何处理,关闭销毁这个界面后这个图片还在内存中,但是我已经调用过了Resources.UnloadUnusedAssets,如下图所示。我的预设没有打成AssetBundle,是放在Resource路径加载的。请问是什么原因导致的呢?
在使用 Resources.Load 加载 UI 界面的情况下,即使“关闭销毁这个界面”后,Resources.UnloadUnusedAssets 确实还是无法卸载对应的图集的。因为此时该图集依然被 Resources.Load 加载出来的 Prefab 引用。
对于这种情况,我们的建议是手动调用 Resources.UnloadAssets 来手动释放图集(可以通过 Sprite.texture 来找到对应的图集),在重新实例化该 UI 界面时,图集也会自动进行 Reload 的。
资源管理
Q5:同样的包同一个图集,ETC2格式,在红米Note1上会比酷派的内存会大四倍,请问这是什么原因造成的?如果不支持OpenGL 3.0,会造成这么大的影响吗?
ETC2 的格式理论上只在OpenGL ES 3.0 的设备上被支持,而在不被支持的设备上则会内部自动转成 RGBA32/ARGB32的格式,这对于 RGBA Compressed ETC2 8bits 的纹理就是放大了 4 倍。因此,如果希望在 OpenGL ES 2.0 的设备上对透明材质进行压缩,那么可以尝试使用分离 Alpha 通道的方式,用两个 ETC1 来进行压缩
资源管理
Q6:如果我的Animator是直接引用了FBX里的动画文件,而不是复制了FBX的动画文件出来再引用,那么打包的时候会把FBX都打包吗?
这种情况下并不会把 FBX 打入 AssetBundle 中。将动画文件Copy出来通常是为了直接对动画文件打包,作为依赖包。
资源管理
Q7:Resources.UnloadUnusedAssets() 不仅局限于Resources.Load的资源,还包括AssetBundle.Load的资源,是吗?
是的,Resources.UnloadUnusedAssets同样可以卸载由AssetBundle.Load加载的资源,只是前提是其对应的AssetBundle已经调用Unload(false),且并没有被引用。
资源管理
Q8:如果采用依赖打包的话,比如NGUI,图集A作为被依赖包,界面1、2、3作为独立包,分别依赖打包。当图集A重新打包的时候,是不是界面1、2、3也都要重新打包?目前我们是界面打包时清空全部的图集信息再打包,在客户端加载后再动态赋值回来。这样可以实现单独更新图集,但是代价就是加载的性能。请问有什么更好的解决方案呢?
“当图集A重新打包的时候,是不是界面1、2、3也都要重新打包”,这是不需要的,Unity 4.x的依赖打包的限制在于,在重新打一个包时需要将它依赖的包都重新打一次,但不需要重打依赖它的包。
资源管理
Q9:关于Static Batching, 场景中物件组合成大的Mesh,那么判断子Mesh要合入大的Mesh中的依据是什么?材质?勾选Static?
我有一个模型A并勾选Static,使用材质A,怎么看到也和其他材质的Mesh合并到一块去了(Combined Mesh)?
勾选Static的GameObject下的Mesh都会被合入CombineMesh(无论什么材质),且每个Mesh都作为SubMesh存在。在Unity 5.3之前,对于渲染顺序相邻且材质相同的SubMesh则会动态将其索引数组拼合,从而合成一个Draw Call。而Unity 5.3之后则不再拼合索引数组,因为在不切换材质时产生多个Draw Call的开销并不大,而这多个Draw Call会被统计为一个Batch。
资源管理
Q10:StaticBatchingUtility.Combine会产生Combined Mesh的内存,如何手动删除这部分内存?
在需要删除时,首先可以通过某个使用了该Combined Mesh的MeshFilter来获取其引用(MeshFilter.sharedMesh),然后通过Destroy接口来将其卸载。因为Combined Mesh不属于真正的Assets(在Deep Memory中不属于Assets下,而是在Scene Memory下),所以不能用Resources.UnloadAsset来卸载。
QA——资源管理(三)相关推荐
- 项目管理之人力资源管理
目录 前言 一.项目人力资源管理过程 二.规划人力资源管理 三.组建项目团队 四.建设项目团队 五.管理项目团队 总结 前言 本章主要讲解一下项目管理过程中的人力资源管理,如何进行规划项 ...
- 栋的月结 | 第二回合(定期更新、动态、架构、云技术、算法、后端、前端、收听/收看、英文、书籍、影视、好歌、新奇)[含泪总结.. 憋泪分享!]
开篇词 大家好!以下是我在 2020 年 2 月 1 日至 29 日的所见.所闻.所学和所悟. 现在,我把它们安利给你们. 定期更新 原创专栏: 一文搞定 Linux 管理员手册:既简单又深刻 官方授 ...
- linux 源码安装 yum rpm区别
一.源代码形式 1.绝大多数开源软件都是直接以原码形式发布的 2.源代码一般会被打成.tar.gz的归档压缩文件 3.源代码需要编译成为二进制形式之后才能够运行使用 4.源代码基本编译流程: 1).c ...
- java ipmitool_ipmitool使用手册(20200401)
ipmitool使用手册 原创xinqidian_xiao 最后发布于2018-07-05 12:15:47 阅读数 17579 收藏 展开 一.查找安装包 查看ipmitool属于哪个安装包 #yu ...
- 书评 - 《展望敏捷软件测试》
借Selenium诞生十周年庆典之机,来自于ThoughtWorker公司的几位专家共同推出了一本精选书,其中收录了他们在软件测试方法.工具和文化方面的一些文章.这本精选书以电子书的形式提供,书名为& ...
- 信息系统项目管理师_信息系统项目管理师历史文章总结
下面对以前的信息系统项目管理师文章做一个总结,方便大家以后阅读.感谢大家的关注与支持. 2019年11月信息系统项目管理师综合知识 2019下半年信息系统项目管理师下午案例分析 2019下半年信息系统 ...
- linux中yum与rpm区别
原文地址:https://blog.csdn.net/ziyun_xiaoyan/article/details/54341823 一.源代码形式 1. 绝大多数开源软件都是直接以原码形式发 ...
- qt打包rpm时候先安装其他软件_云计算学习路线图素材课件,Linux中软件安装的方式...
很多初学者感觉云计算就是一个听起来比较高大上的名词,每次想要了解它的时候都像是雾里看花,迷迷糊糊看不真切,至于它是干什么的就更不了解了,其实云计算学起来在IT行业中还是比较容易上手的,接下来我给大家分 ...
- _云计算学习路线图素材课件,Linux中软件安装的方式
很多初学者感觉云计算就是一个听起来比较高大上的名词,每次想要了解它的时候都像是雾里看花,迷迷糊糊看不真切,至于它是干什么的就更不了解了,其实云计算学起来在IT行业中还是比较容易上手的,接下来我给大家分 ...
最新文章
- 在用户控件中弹出消息框的方法
- 《LeetCode力扣练习》第14题 C语言版 (做出来就行,别问我效率。。。。)
- 当session失效后,无论点击那个页面,都找到顶端页面,跳到登录页面。
- java基础---IO字符流
- 惠普服务器查询ilo信息,Hp服务器iLO IML硬件日志收集与远程巡检
- 在竞争激烈的ToB公司,这个创始团队拒绝一夜暴富,坚持做好产品
- TraceView(profile) and Systrace
- 网络管理员的任务与职责
- blog转到CNBlog了
- 我家遥控器载波波形研究
- 项目开发中的人月及如何计算
- QT 调试时出现 Unable to create a debugging engine.
- 从父组件中获取子组件的值
- 如何在 HTML 网站上创建其他网页
- uva-10115 - Automatic Editing
- 北大计算机所孙俊教授,教育部人工智能咨询专家孙俊:科技怎样赋能智慧教育?...
- 事务的四个特性以及四个隔离级别
- 分布式调度框架Elastic-Job
- win10系统 VirtualBox 无法打开虚拟机,报错VERR_VD_IMAGE_READ_ONLY
- 再见,我的念青五笔。