资源管理

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——资源管理(三)相关推荐

  1. 项目管理之人力资源管理

    目录 前言 一.项目人力资源管理过程​​​​​​​ 二.规划人力资源管理 三.组建项目团队 四.建设项目团队 五.管理项目团队 总结 前言 本章主要讲解一下项目管理过程中的人力资源管理,如何进行规划项 ...

  2. 栋的月结 | 第二回合(定期更新、动态、架构、云技术、算法、后端、前端、收听/收看、英文、书籍、影视、好歌、新奇)[含泪总结.. 憋泪分享!]

    开篇词 大家好!以下是我在 2020 年 2 月 1 日至 29 日的所见.所闻.所学和所悟. 现在,我把它们安利给你们. 定期更新 原创专栏: 一文搞定 Linux 管理员手册:既简单又深刻 官方授 ...

  3. linux 源码安装 yum rpm区别

    一.源代码形式 1.绝大多数开源软件都是直接以原码形式发布的 2.源代码一般会被打成.tar.gz的归档压缩文件 3.源代码需要编译成为二进制形式之后才能够运行使用 4.源代码基本编译流程: 1).c ...

  4. java ipmitool_ipmitool使用手册(20200401)

    ipmitool使用手册 原创xinqidian_xiao 最后发布于2018-07-05 12:15:47 阅读数 17579 收藏 展开 一.查找安装包 查看ipmitool属于哪个安装包 #yu ...

  5. 书评 - 《展望敏捷软件测试》

    借Selenium诞生十周年庆典之机,来自于ThoughtWorker公司的几位专家共同推出了一本精选书,其中收录了他们在软件测试方法.工具和文化方面的一些文章.这本精选书以电子书的形式提供,书名为& ...

  6. 信息系统项目管理师_信息系统项目管理师历史文章总结

    下面对以前的信息系统项目管理师文章做一个总结,方便大家以后阅读.感谢大家的关注与支持. 2019年11月信息系统项目管理师综合知识 2019下半年信息系统项目管理师下午案例分析 2019下半年信息系统 ...

  7. linux中yum与rpm区别

    原文地址:https://blog.csdn.net/ziyun_xiaoyan/article/details/54341823 一.源代码形式 1.      绝大多数开源软件都是直接以原码形式发 ...

  8. qt打包rpm时候先安装其他软件_云计算学习路线图素材课件,Linux中软件安装的方式...

    很多初学者感觉云计算就是一个听起来比较高大上的名词,每次想要了解它的时候都像是雾里看花,迷迷糊糊看不真切,至于它是干什么的就更不了解了,其实云计算学起来在IT行业中还是比较容易上手的,接下来我给大家分 ...

  9. _云计算学习路线图素材课件,Linux中软件安装的方式

    很多初学者感觉云计算就是一个听起来比较高大上的名词,每次想要了解它的时候都像是雾里看花,迷迷糊糊看不真切,至于它是干什么的就更不了解了,其实云计算学起来在IT行业中还是比较容易上手的,接下来我给大家分 ...

最新文章

  1. 在用户控件中弹出消息框的方法
  2. 《LeetCode力扣练习》第14题 C语言版 (做出来就行,别问我效率。。。。)
  3. 当session失效后,无论点击那个页面,都找到顶端页面,跳到登录页面。
  4. java基础---IO字符流
  5. 惠普服务器查询ilo信息,Hp服务器iLO IML硬件日志收集与远程巡检
  6. 在竞争激烈的ToB公司,这个创始团队拒绝一夜暴富,坚持做好产品
  7. TraceView(profile) and Systrace
  8. 网络管理员的任务与职责
  9. blog转到CNBlog了
  10. 我家遥控器载波波形研究
  11. 项目开发中的人月及如何计算
  12. QT 调试时出现 Unable to create a debugging engine.
  13. 从父组件中获取子组件的值
  14. 如何在 HTML 网站上创建其他网页
  15. uva-10115 - Automatic Editing
  16. 北大计算机所孙俊教授,教育部人工智能咨询专家孙俊:科技怎样赋能智慧教育?...
  17. 事务的四个特性以及四个隔离级别
  18. 分布式调度框架Elastic-Job
  19. win10系统 VirtualBox 无法打开虚拟机,报错VERR_VD_IMAGE_READ_ONLY
  20. 再见,我的念青五笔。

热门文章

  1. 3DUI Cocos Creator
  2. MyBatis Generate的使用
  3. 基于PHP+MySQL婚介交友网站的设计与开发
  4. 学习笔记--破解系统密码
  5. vue3 axios
  6. 赢在微点答案专区英语_英语的搭讪万能句,还不来学一下? l 从零开始学英语 E0220...
  7. 科技不总是冷冰冰,智能便携打印机让文字更有温度!——嵌入式功能实现篇
  8. iOS 商品倒计时 限时特价 限时优惠 功能的封装
  9. 《图解TCP/IP》阅读笔记
  10. python排名动画_Python动画:数据量大,历史动画速度慢