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版本

 

繁夜

发表评论


:[微笑]::[撇嘴]::[色]::[发呆]::[得意]::[流泪]::[害羞]::[闭嘴]::[睡]::[大哭]::[尴尬]::[发怒]::[调皮]::[呲牙]::[惊讶]::[难过]::[酷]::[冷汗]::[抓狂]::[吐]::[偷笑]::[可爱]::[白眼]::[傲慢]::[饥饿]::[困]::[惊恐]::[流汗]::[憨笑]::[大兵]::[奋斗]::[咒骂]::[疑问]::[嘘...]::[晕]::[折磨]::[衰]::[骷髅]::[敲打]::[再见]::[擦汗]::[抠鼻]::[鼓掌]::[糗大了]::[坏笑]::[左哼哼]::[右哼哼]::[哈欠]::[鄙视]::[委屈]::[快哭了]::[阴险]::[亲亲]::[吓]::[可怜]::[笑哭]::[doge]::[泪奔]::[无奈]::[托腮]::[斜眼笑]::[喷血]::[惊喜]::[骚扰]::[小纠结]::[我最美]::[羊驼]::[幽灵]::[吃]::[OK]::[爱你]::[抱拳]::[勾引]::[强]::[弱]::[拳头]::[爱心]::[喝彩]::[西瓜]::[啤酒]::[玫瑰]::[凋谢]::[礼物]::[拥抱]::[月亮]::[菊花]::[棒棒糖]::[蛋]::[刀]::[菜刀]::[炸弹]::[手枪]:

刷新评论

目前评论: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 这是下载链接