unity资源包的依赖关系(1)

本文通过实际操作演示了如何在Unity中设置资源依赖、打包资源,并解析了资源间的依赖关系。介绍了创建材质球、贴图及预制体的过程,展示了如何使用自定义脚本进行资源打包。

资源的依赖+打包+加载——游戏的核心部分

参考网址: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之后,为我们做了这些。

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值