Version: Unity 6.0 (6000.0)
语言 : 中文
创建自定义资源包
Graphics for Android

在运行时管理资源包

Unity 提供了在运行时管理资源包的 API。这些 API 基于 Google 的 PlayCore API,因此它们具有与 PlayCore 相同的限制,并且无法管理 install-time 资源包。使用 PlayCore API 还意味着您的应用程序需要 PlayCore 插件。如果您的项目含有资源包,无论是自定义资源包还是 Unity 生成的资源包,Unity 都会自动将 PlayCore 依赖项添加到应用程序的清单中。

您下载资源包并访问其资源的方式取决于资源包的交付方式。有三种资源包交付模式:

  • install-time:当设备安装应用程序时,Google Play 会自动下载 install-time 资源包。Google Play 将这些资源包视为基础应用程序的一部分,终端用户必须卸载整个应用程序才能卸载这些资源包。PlayCore API 不处理 install-time 资源包,这意味着您无法检查其状态、请求下载或删除这些 install-time 资源包。除了 Unity 自动生成的 install-time 资源包中的流媒体资源外,您无法直接访问这些资源包内的资源。要访问流媒体资源,请使用 Application.streamingAssetsPath 获取流媒体资源路径,然后通过 UnityWebRequest 访问该路径中的资源。如果您创建自定义资源包,则无法使用标准文件 API 访问其中的资源。应使用 Android AssetManager API
  • fast-follow:Google Play 在安装应用程序后自动开始下载 fast-follow 资源包。但是,应用程序首次启动时可能并非所有 fast-follow 资源包都可用。要检查状态并下载 fast-follow 资源包,请参阅下载资源包
  • on-demand:Google Play 不会自动下载 on-demand 资源包。您必须手动开始下载。有关如何操作的详细信息,请参阅下载资源包

有关交付模式的更多信息,请参阅交付模式

下载资源包

如果您的应用程序使用 fast-followon-demand 资源包,则设备必须先下载这些资源包,然后应用程序才能访问其中的资源。要检查资源包的状态并下载(如果它们不在设备上),您必须首先获取每个资源包的名称。要获取 Unity 生成的资源包的名称,请调用 AndroidAssetPacks.GetCoreUnityAssetPackNames。由于没有运行时 API 来获取自定义资源包,您需要自行跟踪这些名称。自定义资源包的名称在构建时设置,即为其目录名称。

获取资源包名称后,要检查每个资源包的状态,请调用 AndroidAssetPacks.GetAssetPackStateAsync,并传入资源包名称。这将返回您查询的资源包的状态,您可以根据结果确定是否需要下载资源包。如果您想快速查询每个 Unity 生成的资源包的状态,可以使用 AndroidAssetPacks.coreUnityAssetPacksDownloaded。这有助于确保在加载第一个场景之外的任何场景或尝试访问其他资源之前,所有 Unity 自动生成的资源包都可用。

对于需要下载的每个资源包,请调用 AndroidAssetPacks.DownloadAssetPackAsync,并传入资源包名称。在下载资源包时,请监控下载状态,因为下载可能会暂停或失败。您可以选择以下两种方式之一:

其他资源

创建自定义资源包
Graphics for Android