一直没有总结过Unity的资源管理,都是随用随看文档。今天有人问起,总结一下。加深对Unity资源管理的理解。

主要參考了Unity官方文档之ResourcesAssetBundle

Unity有两种动态载入资源的方式,Resources.Load和AssetBundle。Resources.Load用于载入打进游戏包内Resources文件夹下的资源,AssetBundle用于载入包外自己打的资源包(使用BuildPipeline.BuildAssetBundle)。经常使用于做动态更新。

以下结合API详细说明:

载入:

Resources.Load:载入app包内Resources/文件夹的一个asset;

Resources.LoadAsync:Resources.Load的异步方法。

Resources.LoadAll:类似Resources.Load,可是用于载入某文件夹下全部asset;

Resources.LoadAssetAtPath:载入Asset/文件夹下的资源,仅仅能用于编辑器模式。写打包工具时可能用到;

---------------------------------------------------------------------------------------------------------------------------------------

AssetBundle.CreateFromFile:从磁盘载入一个AssetBundle,这是载入AssetBundle最快的方式(仅仅能载入uncompressed的AssetBundle)。

Unity
5.x改为LoadFromFile,并且能够载入compressed的;

AssetBundle.CreateFromMemory:从内存中创建一个AssetBundle,异步方法。

Unity 5.x改为LoadFromMemoryAsync;

AssetBundle.CreateFromMemoryImmediate:AssetBundle.CreateFromMemory的同步方法。Unity 5.x改为LoadFromMemory。

WWW.LoadFromCacheOrDownload:从缓存或网络上下载后载入AssetBundle,不需操心设备空间不足;

AssetBundle.LoadAsset:从AssetBundle中载入一个asset。

AssetBundle.LoadAssetAsync:AssetBundle.LoadAsset的异步方法;

AssetBundle.LoadAllAssets:载入AssetBundle中全部指定类型的asset。

AssetBundle.LoadAllAssetsAsync:AssetBundle.LoadAllAssets的异步方法;

卸载:

Resources.UnloadAsset(Object assetToUnload):卸载指定的asset。仅仅能用于从磁盘载入的;假设场景中有此asset的引用,Unity会自己主动又一次载入它。

Resources.UnloadUnusedAssets:卸载全部未被引用的asset,能够在画面切换时调用,或定时调用释放全局未使用资源;

---------------------------------------------------------------------------------------------------------------------------------------

AssetBundle.Unload(false):卸载AssetBundle的压缩文件数据(文件内存映像)。

AssetBundle.Unload(true):卸载AssetBundle文件内存映像,而且释放全部已载入的asset。假设asset在场景中被引用,会丢失;

---------------------------------------------------------------------------------------------------------------------------------------

Object.Destroy:销毁一个GameObject、组件或asset。并非马上销毁,而是在Update循环之后,渲染之前;

Object.DontDestroyOnLoad:标明一个对象在切换场景时不被销毁;

GC.Collect:强制垃圾收集器马上回收内存,能够依据须要使用,比方切换画面调用或定时调用。

通过看Unity的这些API说明。能够清晰地了解Unity的动态资源管理了。

以下这幅图描绘的更清晰:

Unity3D - 资源管理的更多相关文章

  1. Unity3d资源管理分析

    原创链接:http://blog.csdn.net/ox_thedarkness/article/details/9197453 分离资源管理 参考 1.Unity3D占用内存太大的解决方法 - 星尘 ...

  2. Unity3D资源管理架构

    在Unity3D引擎中,场景资源文件(.unity)是以2进制格式存储的.但同一时候它也有一种基于文本的表现格式. 可在Edit>Project Setting>Editor 中设置: 1 ...

  3. 资源 Des加密

    Unity3d资源管理分析 http://blog.csdn.net/sgnyyy/article/details/39268215 打包资源 http://www.cnblogs.com/sifen ...

  4. Unity3D和OGRE资源管理机制

    转自:http://www.tuicool.com/articles/QbMjUn 游戏中通常有大量资源,如网格.材质.纹理.动画.着色器程序和音乐等,游戏引擎作为做游戏的工具,自然要提供良好的资源管 ...

  5. 浅析游戏引擎的资源管理机制——扒一扒Unity3D中隐藏在背后的资源管理

    游戏中通常有大量资源,如网格.材质.纹理.动画.着色器程序和音乐等,游戏引擎作为做游戏的工具,自然要提供良好的资源管理,让游戏开发者用最简单的方式使用资源.游戏引擎的资源管理包括两大部分:离线资源管理 ...

  6. Unity3D游戏开发框架-资源管理类ResourceManage

    新建文件夹:ResMgr.接着新建三个C#脚本.代码如下: IResLoadListener.cs AssetInfo.cs ResMgr.cs using UnityEngine; using Sy ...

  7. Unity3D游戏开发初探—1.跨平台的游戏引擎让.NET程序员新生

    一.Unity3D平台简介 Unity是由Unity Technologies开发的一个让轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的 ...

  8. Unity3D游戏开发初探—3.初步了解U3D物理引擎

    一.什么是物理引擎? 四个世纪前,物理学家牛顿发现了万有引力,并延伸出三大牛顿定理,为之后的物理学界的发展奠定了强大的理论基础.牛顿有句话是这么说的:“如果说我看得比较远的话,那是因为我站在巨人的肩膀 ...

  9. 跟我从零基础学习Unity3D开发--U3d脚本注意事项及两个基本函数的简单介绍

    经过上一篇的学习,我相信开发环境您已经搭好了,如果还没有搭好可以百度一下. 今天主要讲的有以下几点: 第一:Unity3D中的C#脚本与.net中的C#写法的区别 1.Unity3D C#脚本不支持命 ...

随机推荐

  1. C/C++服务器开发的必备利器–libconfig

    http://www.leoox.com/?p=311 程序肯定需要一份配置文件,要不然,自己的程序不是“可配置”的,自己都不好意思往“高大上”靠拢.言归正传,以前自己写代码,配置文件的读写都是各式各 ...

  2. hdu2158

    最短区间版大家来找碴 Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  3. [MySql]windows下设置mysql默认编码

    摘要 在安装好mysql的时候,如果新建数据库或者表默认的编码为latin1,如果这时候插入中文时,出出现类似下面的乱码的问题. SQLException: Incorrect string valu ...

  4. java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方式

    昨天整理桌面的时候将桌面的一堆文件移动到F盘去了,结果导致原来建的一些项目名称所有出现红色感叹号,打开一看,原来是由于我把hibernate的那些jar包移走了.导致user library里那些ja ...

  5. 表单提交的3种方式,http post的contentType

    application/x-www-form-urlencoded:窗体数据被编码为名称/值对.这是标准的编码格式.这是默认的方式 multipart/form-data:窗体数据被编码为一条消息,页 ...

  6. 采用Operator-sdk轻松将helm chart转为Operator

    去年就接触Operator,从Oracle发布的WebLogic Operator到mySQL Operator,构建的源码一大堆,但感觉一直缺少合适的开发框架能够避免复杂性快速生成, 随着技术的日益 ...

  7. 快速入门:十分钟学会PythonTutorial - Learn Python in 10 minutes

    This tutorial is available as a short ebook. The e-book features extra content from follow-up posts ...

  8. 在JSP中应用JavaBean

    1. 解决中文乱码的JavaBean 在JSP页面中,处理中文字符经常会出现字符乱码的现象,特别是通过表单传递中文数据时容易产生.它的解决办法有很多,如将request的字符集指定为中文字符集,编写J ...

  9. OpenCV学习(21) Grabcut算法详解

    grab cut算法是graph cut算法的改进.在理解grab cut算之前,应该学习一下graph cut算法的概念及实现方式. 我搜集了一些graph cut资料:http://yunpan. ...

  10. 我所遭遇过的游戏中间件---SpeedTree

    我所遭遇过的游戏中间件---SpeedTree SpeedTree是一个专门用于渲染植被的中间件,并提供了一套完善的植物编辑工具.在它官方提供的DEMO中,你会看到高度逼真的树木和植物,在风的影响下树 ...