1.通过 Resources 模块,调用它的 load 函数:可以直接 load 并返回某个类
型的 Object,前提是要把这个资源放在 Resource 命名的文件夹下,Unity
不关有没有场景引用,都会将其全部打入到安装包中。Resources.Load();
2.通过 bundle 的形式: 即将资源打成 asset bundle 放在服务器或本地
磁盘, 然后使用 WWW 模块 get 下来, 然后从这个 bundle 中 load 某个 object。
AssetBundle
3.通过 AssetDatabase.loadasset :这种方式只在 editor 范围内有效,
游戏运行时没有这个函数, 它通常是在开发中调试用的 【AssetDatabase 资
源数据库】
区别:Resources 的方式需要把所有资源全部打入安装包,这对游戏的分包
发布(微端)和版本升级(patch)是不利的,所以 unity 推荐的方式是不
用它, 都用 bundle 的方式替代, 把资源达成几个小的 bundle, 用哪个就 load
哪个,这样还能分包发布和 patch,但是在开发过程中,不可能没更新一个
资源就打一次 bundle, 所以 editor 环境下可以使用 AssetDatabase 来模拟,这通常需要我们封装一个 dynamic resource 的 loader 模块,在不同的环
境下做不同实现。
动态资源的存放
有时我需要存放一些自己的文件在磁盘上,例如我想把几个 bundle 放
在初始的安装里, unity 有一个 streaming asset 的概念,用于提供存
储接口的访问。我们需要在编辑器建立一个 StreamingAssets 名字的文件
夹,把需要我们放在客户磁盘上的动态文件放在这个文件夹下面,这样安装
后,这些文件会放在用户磁盘的指定位置,这个位置可以通过
Application.streamingAssetsPath 来得到。