Version: 6000.3
语言: 中文
Web Build 文件夹
分发大小和代码剥离

Web 中的资产包

注意:Unity 的 Addressables 系统是推荐的资产加载方法。以下内容仅适用于直接使用AssetBundle时。

由于在内容开始之前必须预先下载所有资产数据,因此请考虑将资产从主数据文件移出并移至 AssetBundles。这样做会创建一个更小的加载器场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
加载速度很快,而 AssetBundles 会在用户继续浏览您的内容时按需动态加载资产。AssetBundles 还有助于资产数据内存管理:您可以通过调用 AssetBundle.Unload 从内存中卸载不再需要的资产的资产数据。

在Web平台上使用AssetBundle时,以下注意事项适用:

  • 当您在 AssetBundle 中使用主构建中未使用的类类型时,Unity 可能会从构建中剥离这些类的代码。这可能会导致尝试从AssetBundle加载资产时失败。使用 BuildPlayerOptions.assetBundleManifestPath 解决该问题,并参考 Distribution size and code stripping 了解其他选项。

  • WebGL一种在 Web 浏览器中呈现 2D 和 3D 图形的 JavaScript API。Unity Web 构建选项允许 Unity 将内容发布为 JavaScript 程序,这些程序使用 HTML5 技术和 WebGL 渲染 API 在 Web 浏览器中运行 Unity 内容。更多信息
    请参阅术语表
    图形 API 不支持线程。由于 HTTP 下载只有在下载后才可用,因此 Unity Web 平台构建需要在下载完成后在主线程上解压缩 AssetBundle 数据,从而阻止主线程。为避免这种中断,LZMA AssetBundle 压缩不适用于 Web 上的 AssetBundle。AssetBundle 使用 LZ4 进行压缩,LZ4 可按需高效解压缩。如果您需要更小的压缩一种存储数据的方法,可减少所需的存储空间量。请参阅纹理压缩动画压缩音频压缩构建压缩
    请参阅术语表
    大小高于 LZ4 提供的大小,请将您的 Web 服务器配置为在 AssetBundle 上使用 gzip 或 Brotli 压缩(在 LZ4 压缩之上)。有关如何执行此作的更多信息,请参阅部署压缩版本

  • Web 平台不支持使用 UnityWebRequestAssetBundle.GetAssetBundle 进行基于文件系统的 AssetBundle 缓存。相反,浏览器会缓存 WebRequest 响应;有关详细信息,请参阅 Web 中的缓存行为。这意味着,当加载 AssetBundle 时,整个 AssetBundle 文件都保存在内存中,您必须立即卸载未使用的 AssetBundle,尤其是当它们很大时。

其他资源

Web Build 文件夹
分发大小和代码剥离