资源的依赖+打包+加载——游戏的核心部分
参考网址:http://liweizhaolili.blog.163.com/blog/static/16230744201541410275298/
本文主要是跟从网址做下具体的操作,在原文的基础上自己亲手做了一遍以便加深体会,感谢原作者的详细讲解。
下面,就按照作者的思路叙述下具体的步骤。
新建unity的项目,建立如下的文件夹:
贴图的准备,首先从网上找几张自己喜爱的jpg即可,这些都不重要,那还是找个mm吧,个人比较喜欢金泰熙哦。最初的认识是在《爱在哈佛》,想想都是好久之前的事情了。
闲话少说,我们继续。
四张贴图放在了Textures文件夹下,我们设置下贴图的格式:
这些都无关紧要了,处于做ui的个人习惯还是改了下格式,这对本文的资源打包无任何的影响。
四张贴图准备完毕,接下来就是建立两个材质球了。
材质球的创建,这个不要我教了吧,右键,选择Material即可。
材质球1,名称为:M1;材质球2,名称为:M2。
接下来当然是将我们的贴图贴到材质球了呦,怎么拖上去呢,那当然是要有一个shader了,材质球使用shader,shader使用贴图,所以要先为材质选择shader。这里随便找一个unity中的shader即可,不需要自己手动的写shader,不要怕。
对于M1材质,我们选择一个shader,它需要3张以上的贴图的,为什么3张,其实只是还原原作者的要意图吧了,演示吗,当然要做的逼真写,ok,我们选择了一个shader。
虽然这个shader需要4张贴图,但是我们只给了3个,无所谓了,我们介绍的是依赖关系,而不是别的呦。
同样的M2材质球只需要1张贴图,那就找一个需要1个以上的材质去即可,如果你偷懒,就还是用与M1相同的shader也是可以的。我们的M2设置好之后如下:
ok,紧接着我们当然是用我们的材质了。新建立两个GameObject,Cube和Cylinder,小伙伴们,Cylinder还是知道什么意思吗?圆柱体哦。好吧,继续。
我们将Cube的材质换成M1;而Cylinder的材质换成M2。如下所示:
Cylinder的如下图所示:
这样设置好之后,我们将Cube和Cylinder从层级视图(Hierarchy视图)拖拽到项目视图(Project)即
可做成预制体了。如下图所示:
ok,下面就是打包了,打包的小程序还是要附上的,要不然,不知道后面的manifest从哪里来的。
这样我们的unity的工具栏上就多了一个打包的菜单了。
下面,就是为我们要打包的资源设置上标签喽。
如这里的Cube我们命名为obj1,后缀为ab,照此做法,将M1/M2;T1/T2/T3/T4;以及Cylinder设置好
就可以了,这里的命名一次为:M1.ab M2.ab T1.ab T2.ab T3.ab T4.ab Obj2.ab,这里的名称不区分大小写。
点击之后,我们在项目的路径下就会多了一个文件夹:Bundles,这个是上面的打包的程序写死的哦。点击
菜单就可以得到下面的文件文件了:
首先,我们看看Bundles.manifest文件,这是个一个总文件:
ManifestFileVersion: 0
AssetBundleManifest:
AssetBundleInfos:
Info_0:
Name:obj1.ab
Dependencies:
Dependency_0: m1.ab
Info_1:
Name:obj2.ab
Dependencies:
Dependency_0: m2.ab
Info_2:
Name:m1.ab
Dependencies:
Dependency_0: t1.ab
Dependency_1: t2.ab
Dependency_2: t3.ab
Info_3:
Name: m2.ab
Dependencies:
Dependency_0: t4.ab
Info_4:
Name:t1.ab
Dependencies: {}
Info_5:
Name:t2.ab
Dependencies: {}
Info_6:
Name:t3.ab
Dependencies: {}
Info_7:
Name:t4.ab
Dependencies: {}
我们不难发现,这里记录了所有的依赖关系。obj1.ab即为们的Cube,它使用材质M1,而材质M1使用了
3张贴图T1、T2、T3;obj2.ab即是我们的Cylinder,她使用材质M2,而材质M2使用了一张贴图T4。
在看看细分的文件,obj1.ab.manifest,内容如下:
ManifestFileVersion: 0
CRC: 3216206643
Hashes:
AssetFileHash:
serializedVersion: 2
Hash:defe764e0fc2db79b5f1bc2c3b1f9b5a
TypeTreeHash:
serializedVersion: 2
Hash:67e99222a1589ff9377ee6366f65dd7a
HashAppended: 0
ClassTypes:
- Class: 1
Script:{instanceID: 0}
- Class: 4
Script:{instanceID: 0}
- Class: 21
Script:{instanceID: 0}
- Class: 23
Script:{instanceID: 0}
- Class: 33
Script:{instanceID: 0}
- Class: 43
Script:{instanceID: 0}
- Class: 65
Script:{instanceID: 0}
Assets:
- Assets/Prefabs/Test/Prefabs/Cube.prefab
Dependencies:
- Bundles/m1.ab
可以看到,obj1.ab依赖的一个文件是Bundles下面的m1.ab,并且这里的Assets的值记录了obj1.ab的资源里面包含的是Cube.prefab,以及他的绝对路径。
其他的manifest文件结构类似。
这里就可以看到资源之间的明显的依赖关系了。unity5.x之后,为我们做了这些。
本文通过实际操作演示了如何在Unity中设置资源依赖、打包资源,并解析了资源间的依赖关系。介绍了创建材质球、贴图及预制体的过程,展示了如何使用自定义脚本进行资源打包。
&spm=1001.2101.3001.5002&articleId=51474959&d=1&t=3&u=7380c343737843feaa5980ec88a6970c)
4457

被折叠的 条评论
为什么被折叠?



