Unity中的AssetBundle 资源打包有什么作用
发表于2018-10-17
AssetBundle首先从字面意思理解为资源捆绑,那么他的作用就是将一部分资源(模型,贴图,材质,预制体,声音场景等等),打包压缩在一起,那么可能有人会问,对于unity项目,把资源压缩打包有什么用呢?
主要作用有两点
1:减少安装包的大小
首先你要了解unity的打包原理,默认情况下,unity编译打包是对项目下的Assets文件夹全部内容进行压缩打包
那么按照这个原理,你的Assets文件夹的大小将会影响到你最终打包出的安装包的大小,假如你现在正在制作一个游戏项目,最终打出来的安装包过大可能会对玩家下载造成一定影响,对一般玩家来讲,下载10M的游戏安装包远远比下载100M的游戏安装包要更容易接受,而AssetBundle可以将一部分资源打包到一个压缩包里面,游戏运行到需要的时候再进行下载这部分资源。
举个例子:你的游戏一共有100个关卡,如果将这些全部打包则打出的安装包大小为100M,如果现在你用AssetBundle技术将后面90关的资源分离出去进行打包,那么你现在打包的游戏内容只有10个关卡的资源,安装包大小仅为10M,等玩家体验了前十关觉得还不错,当他想玩10关以后的游戏内容时,提示他需要下载资源包体验更多精彩内容,然后在unity中加载剩余的90关的资源包。这样做的话,你的游戏安装包仅仅10M大小,因为下载比较快,也比较省流量,可能会吸引更多的玩家下载体验你的游戏。
2:可以用热更新修复你的游戏Bug
经历千辛万苦,你的游戏终于上线了,是时候该庆祝一番了吧?不要高兴的太早,你突然收到玩家反馈,游戏第20关通关后无法进入到下一关,据查证,是原来打包时某个同事粗心大意把第21关的资源弄错了,导致加载21关时报错,这位同事的鸡腿儿能不能保得住,我们关心的不是这个,我们现在需要第一时间修复这个问题,如果是按照原来的打包方式,你们需要重新出一个100M的包,然后把重新出的包交给游戏平台审核,审核通过后,玩家需要卸载掉原来的游戏软件,重新下载你们新打出的安装包,(ps玩家心理:坑X游戏,又需要花100M重新下载,老子这个月流量都不够聊微信了,不玩了!)
如果按照另一种打包方式,我们在后面90关的AssetBundle包里修复这个问题,这时候通过服务器传输AssetBundle最新的包,会把有问题的资源进行修复,提示玩家bug已经修复,玩家进入游戏,发现可以把20关打通了,并且成功进入到下一关了,在这个游戏过程中,玩家不需要重新下载那100M的安装包,只需要打开游戏下载部分需要更新的资源,这部分资源一般会比较小,一般情况下可能是几十k的大小,就可以重新体验游戏了。这就是AssetBundle的第二个作用。
都看到这里了应该能明白AssetBundle有什么用了吧,我们下期将介绍如何使用AssetBundle,敬请期待