一直没有总结过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. 【linux】linux查看文件大小,磁盘大小

    查看指定目录下 文件或目录大小超过多少的 查看 /backup/tomcat7/ 目录下 超过500M大小的文件 并展示 文件详情 find /backup/tomcat7/  -type f -si ...

  2. [翻译] AGPhotoBrowser 好用的图片浏览器

    AGPhotoBrowser  好用的图片浏览器 https://github.com/andreagiavatto/AGPhotoBrowser A photo browser for iOS6 a ...

  3. P值(P-value),“差异具有显著性”和“具有显著差异”

    郑冰刚提到P值,说P值的定义(着重号是笔者加的,英文是从WikiPedia摘来的): P值就是当原假设为真时,比所得到的样本观察结果更极端的结果出现的概率. The P-value is the pr ...

  4. poj 1469 COURSES 题解

    COURSES Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21515   Accepted: 8455 Descript ...

  5. 原创D3D几何实例化的DEMO

    CUBE的几何实例化DEMO 鼠标右键按下并拖动         旋转视角WSAD                         前后左右RF                             ...

  6. go语言基础之数组比较和赋值

    1.go语音基础之数组比较和赋值 示例: package main //必须有个main包 import "fmt" func main() { //支持比较,只支持 == 或 ! ...

  7. 通过小实例谈谈javascript的间隔调用和延时调用

    用 setInterval方法可以以指定的间隔实现循环调用函数,直到clearInterval方法取消循环 用clearInterval方法取消循环时,必须将setInterval方法的调用赋值给一个 ...

  8. 说说CSS样式中你不知道的“大于号”

    继承在一定程度上让程序在编写的过程中更加方便,但是有时候也会给我们的程序带来一定的困扰,所以认真的学习继承的原理,以及处理的方法很重要.下面是Css中处理继承的一个方法.在一段CSS代码中见到一个大于 ...

  9. C#_文件读写常用类介绍

    首先要熟悉.NET中处理文件和文件夹的操作.File类和Directory类是其中最主要的两个类.了解它们将对后面功能的实现提供很大的便利.      本节先对和文件系统相关的两个.NET类进行简要介 ...

  10. 【转】gcc选项

    http://zodiac1111.github.io/blog/config-gcc-warning/