动态加载资源的方式
1.Resources.Load()
可以直接load并返回某个类型的Object,前提是要把这个资源放在Resource命名的文件夹下,Unity不关有没有场景引用,都会将其全部打入到安装包中。Resources.Load();
Resources.Load是本地动态加载资源所用的方法,也就是你想动态加载的时候才用到它,比如子弹,特效,某些实时更换的图片什么的,建议此文件夹不要放太多东西,在打包的时候,它会单独把里面的所有东西都集中打包到一起,不管里面有没有你用的东西,所以大多数资源应该是自己建文件放置
2.AssetBundle
http://www.xuanyusong.com/archives/2405/
即将perfab资源打成 asset bundle 放在服务器或本地磁盘,然后使用WWW模块get 下来,然后从这个bundle中load某个object。AssetBundle
3.AssetDatabase.loadasset
http://www.mamicode.com/info-detail-312000.html
这种方式只在editor范围内有效,游戏运行时没有这个函数,它通常是在开发中调试用的
区别与利弊
Resources的方式需要把所有资源全部打入安装包,这对游戏的分包发布(微端)和版本升级(patch)是不利的,所以unity推荐的方式是不用它,都用bundle的方式替代,把资源达成几个小的bundle,用哪个就load哪个,这样还能分包发布和patch,但是在开发过程中,不可能没更新一个资源就打一次bundle,所以editor环境下可以使用AssetDatabase来模拟,这通常需要我们封装一个dynamic resource的loader模块,在不同的环境下做不同实现。