深入理解unity资源与ab包.doc
《深入理解unity资源与ab包.doc》由会员分享,可在线阅读,更多相关《深入理解unity资源与ab包.doc(9页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、.-深入理解资源(Asset)与AssetBundleAB包文件Assetbundle文件格式可以理解为,拥有一个列表头和压缩数据块列表。列表头定义了各数据块的起始位置和大小。数据块列表中存储压缩过的unity对象的序列化数据。AssetBundle对象加载并创建AssetBundle对象。 Assetbundle对象是一个轻量级对象,只包含一个资源(Asset)对象列表和指向实际AB包数据的文件对象。AB包文件加载完成后存放在内存中,注意只有LZ4能够以压缩格式存放在内存中。这段内存不能直接访问,由AssetBundle对象负责管理。AssetBundle.Unload()会释放这段内存。A
2、sset资源实际上unity中并没有与资源(Asset)这个词对应的类。我们一般把从AssetBundle中LoadAsset()出来的对象称为资源 (Asset)。AssetBundle.LoadAsset()等接口从AssetBundle对象中解压数据反序列化构建Object。Unity完美的序列化机制可以使任何对象都可以直接序列化为连续内存块,同样任何对象都可以通过AssetBundle.LoadAsset()反序列化为结构化对象。AssetBundle.LoadAsset()接口返回类型是Object。此功能也暗示了可以将任何对象从ab包内存中反序列化出来构建。Prefab是什么?创建
3、ab包时,一般会将prefab打入到包中。游戏中通过AssetBundle.LoadAsset()将prefab对象加载出来。代码1: 再通过加载出来的prefab构建GameObject:代码 2: 思考:代码1中m_Prefab是什么?是什么类型?如果是GameObject,那么这个GameObject为什么没有出现在场景中?如果是GameObject,为什么一定要通过Instantiate再次clone一个GameObject出来?Unity的C+代码分为两部分,Runtime和Editor。Runtime中包含引擎的所有核心功能,Editor包含编辑器所需核心功能。Prefab.h/c
4、pp存放于Editor中,实现了编辑器中prefab的功能。Prefab继承于Object,包含一个指向GameObject的指针。其功能非常简单,仅仅只是维护编辑器中prefab之间的关联关系,用来实现编辑器中prefab修改编辑功能。Prefab只是对GameObject在编辑器中一个功能封装。上一段源码:从源码判断,Prefab功能非常简单,只是实现编辑器中各prefab关联编辑功能。结论:因此可以推断,在最终发布环境中,并无Prefab对象存在。代码1中 LoadAsset构建的对象是GameObject,此GameObject并不存在于当前场景(scene)中,而是被unity放到了
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深入 深刻 理解 unity 资源 ab
限制150内