Downloading AssetBundles        

下载资源包

此部分的前提是您已了解资源包构建方法。如不了解上述内容,请参阅构建资源包 (Building AssetBundles)

有两种方法可供下载资源包 (AssetBundle)

  1. 不缓存: 通过新建 WWW 对象完成。资源包 (AssetBundles) 不会缓存至本地存储设备的 Unity 缓存 (Cache) 文件夹。

  2. 缓存: 通过调用 WWW.LoadFromCacheOrDownload 完成。资源包 (AssetBundles) 会缓存至本地存储设备的 Unity 缓存 (Cache) 文件夹。网页播放器 (WebPlayer) 共享的缓存允许的最大资源包 ( AssetBundles) 缓存空间为 50 MB。PC/Mac Standalone 应用程序和 iOS/安卓 (Android) 应用程序的最大可用空间为 4 GB。使用专用缓存的网页播放器 (WebPlayer) 应用程序受到缓存许可协议指定的字节数量限制。请参阅脚本文档了解其他平台。

以下是一个非缓存下载示例:

建议使用 WWW.LoadFromCacheOrDownload 下载资源包 (AssetBundles)。例如:

访问 .assetBundle 属性时,程序将提取下载的数据并创建资源包 (AssetBundle) 对象。此时,可加载资源包中的对象。传递到 LoadFromCacheOrDownload 的第二个参数指定要下载的资源包 (AssetBundle) 版本。如果缓存中没有该资源包 (AssetBundle),或拥有的版本低于所需版本,LoadFromCacheOrDownload 将下载资源包 (AssetBundle)。否则,将从缓存加载资源包 (AssetBundle)。

集中资源

准备好组件后,就可构建场景,以便加载资源包 (AssetBundle) 并在屏幕上显示其内容。

最终工程结构

首先,转至 游戏对象 (GameObject)-> 创建空游戏对象 (CreateEmpty) 来创建空的游戏对象。将 CachingLoadExample 脚本拖放至刚创建的空游戏对象。然后在 BundleURL 字段输入资源包 ( AssetBundle) 的 URL。我们已将其放入工程目录,因此您可复制文件目录位置并添加前缀 file://,例如 file://C:/UnityProjects/AssetBundlesGuide/Assets/AssetBundles/Cube.unity3d

现在可在编辑器 (Editor) 中单击播放,然后应看见从资源包 (AssetBundle) 加载的立方体 (Cube) 预设。

在编辑器 (Editor) 中加载资源包 (AssetBundles)

使用需要构建并加载资源包 (AssetBundles) 的编辑器 (Editor) 可延缓开发进程。例如,如果修改了资源包 (AssetBundle) 中的资源 (Asset),则需稍后重新构建该资源包,并且在生产环境中,很可能会一起构建所有资源包 (AssetBundles),使得单个资源包的更新过程冗繁漫长。一个更有效的方法是,在编辑器 (Editor) 中设置一个独立的代码路径,可直接加载该资源 (Asset),而无需从资源包 (AssetBundle) 加载。为此,需要使用 Resources.LoadAssetAtPath(仅限编辑器)。


,