首页 > 代码库 > unity3d的资源管理和热更新方案
unity3d的资源管理和热更新方案
之前开发一直使用cocos2dx,最近开始搭建unity3d的框架,遇到的一个大问题就是热更新。虽然代码采用了slua脚本,unity3d官方也提供了assetbundle这样的解决方案,但是还是有好多的问题需要解决。
1.复杂的资源引用方案。cococ2dx的更新方案很简单——添加附加searchpath,这样只要设置更新文件所在的路径,就能保证优先使用最新资源。但是unity3d并不是这样,因为它没有cocos2dx的FileUtils,没办法控制所有资源的加载。unity3d的资源来源有这么三个路径,unity自动打包、Resources/StreamingAssets、assetbundle。第一种是一种静态的资源索引,编辑器怎么设置那就怎么获取资源,打包时打入包中。第二种是动态资源加载,但是资源也是打包时打入包中的,没法进行更新。第三种可以将资源打包,让我们进行资源管理,是可选的热更新方案。
2.资源加载方案。在游戏包中,我们使用的是静态关联,比如启动了场景SceneLoad,那么用到的资源都是原生打入包中的,那AssetBundle被下载之后,我们要如何才能加载呢?答案是下一个场景动态加载,而不是写死在代码中。这样的话,我们就能通过一个资源配置文件resourceInfo来控制加载的资源和场景的信息了——到底是用哪个assetbundle或者是resources中的资源。
3.assetbundle的粒度应该是如何的?如果每个文件都生成一个ab,那效率太低,但是如果全部资源做成一个ab,下载资源量可能过大,对模块的划分和资源管理也不好。比较好的做法事,通过功能或者模块来划分,比如UI、模型、通用资源等。
4.资源里面,场景是一种特殊的资源,因为它对别的资源有静态的依赖关系,所以打包场景一定包含了很多别的资源。脚本也是一种特殊资源,需要设置好目录关系。
参考:http://www.cnblogs.com/lancidie/p/5878792.html
本文出自 “山重水复” 博客,谢绝转载!
unity3d的资源管理和热更新方案