Unity 3D-新版AssetBundle(实战)

在上一篇博客我介绍了Unity新版AssetBundle系统的一些知识点,在这篇博客中,我用一个小小的Demo来实践一下(Demo的开发工具为Unity5.3.5 + VS2015,请注意IDE版本)。

先准备一个Modle,资源结构如下所示

预制体JuShiGuai使用了材质球Mat1,Mat2,而Mat1,Mat2又分别使用了JuShiGuai_01,JuShiGuai_02两个贴图文件。 Unity 3D-新版AssetBundle(实战)

下面就长话短说直接上代码,具体的用法可以参见上一篇博客

1.设置Modle下的资源的AssetBundleName

  • Mat1 : materials/mat1.unity3d
  • Mat2 : materials/mat2.unity3d
  • JuShiGuai_01 : texture/jushiguai_01.unity3d
  • JuShiGuai_02 : texture/jushiguai_02.unity3d
  • JuShiGuai : jushiguai.unity3d

这儿我直接按原有目录设置,具体情况在实际使用中有待商榷

编写AssetBundle打包代码

  • 为了方便路径的管理,这儿采用我再 Unity 中管理Tag的方式来管理

创建AssetBundleConfig.cs,管理路径

2.创建 AssetBundleBuild.cs,打包AssetBundle

这儿我使用了LZ4压缩格式,保证包的大小和加载速度额均衡

  • 代码编译后会在Unity工具栏挂载 AssetBundle Editor栏,点击菜单栏 AssetBundle Build就会自动对所有设置了assetbundleName的代码进行打包

3.编写AssetBundle加载代码

在传统的方法中,我们加载一个资源,总是加载资源的依赖项-->加载资源-->卸载依赖项,但是当一个资源频繁被其他资源依赖,这样无疑会造成性能问题。

一个可行的解决方案是:我们可以把加载好的资源用字典存着,下次如果还需要加载这个依赖项就可以直接从字典里面读取,程序运行结束后在卸载字典中加载的AssetBundle.

当然可能还会有更好的加载方案,比如统计一个资源的被依赖次数和使用频率,然后定义一个时间周期,将不活跃的资源定期销毁

这儿我就采用字典的方案,把加载好的资源用字典存着

  • 创建 AssetBundleLoad.cs

最后一张程序运行截图奉上

Unity 3D-新版AssetBundle(实战)

4.assetbundleName的自动化设置和清除

新版的AssetBundle虽然提出了AssetBundleName这样一个新的方法。但是在实际工程中,如果对于每个资源都手动添加设置Name。一来会十分麻烦,二来容易出错,三来不方便管理。所以在实际项目中,我们需要一个方法对于一些资源进行批量命名。

一个可行的方案就是,在工程中把资源分类的放好,我们直接读取资源的相对路径+名字,设置为它的assetbundleName,这样AssetBundle打包之后就会有和源资源相同的目录层级结构,更便于管理

  • 创建AssetBundleNameEdit.cs动态的设置清除assetbundleName

代码编译后会在之前的工具栏 AssetBundle Editor下多挂载几个选项,选中某个目录,点击菜单栏选项 SetAssetBundleName(ClearAssetBundleName)就会自动对所有选中目录进行assetbundleName的添加(移除)

关于从服务器加载的实现等有空在补上。

最后附上Demo的git地址

GitHub

Demo的git地址(Click here!

注:Demo的开发工具为Unity5.3.5 + VS2015,请注意IDE版本

 

繁夜

发表评论


头像速览

:[傲慢]::[白眼]::[鄙视]::[擦汗]::[呲牙]::[大兵]::[得意]::[发呆]::[发怒]::[奋斗]::[鼓掌]::[哈欠]::[憨笑]::[坏笑]::[惊讶]::[可爱]::[可怜]::[酷]::[困]::[冷汗]::[流汗]::[流泪]::[难过]::[撇嘴]::[敲打]::[色]::[衰]::[偷笑]::[微笑]::[吓]::[疑问]::[阴险]::[晕]::[咒骂]::[菜刀]::[玫瑰]::[凋谢]::[礼物]::[拥抱]::[炸弹]::[强]::[弱]::[握手]:

目前评论:3   其中:访客  2   博主  1

    • 土鳖哥 土鳖哥 0    来自「四川省广元市 」的朋友 Google Chrome Windows 7

      又是一个技术大神

      • 堆爱博客 堆爱博客 3    来自「贵州省黔东南州 」的朋友 Netscape Navigator iPhone iPhone OS 10_2_1 like Mac OS X) AppleWebKit

        兄弟在不!有空把那个文件给我个链接下载吧!

          • 繁夜 繁夜 博主 来自「四川省绵阳市 」的朋友 UC浏览器 Windows 10

            @堆爱博客 链接:http://pan.baidu.com/s/1eR8sTTg 密码:rw6q 这是下载链接