Unity3d:在运行时管理资源包

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

在运行时管理资源包

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

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

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

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

下载资源包

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

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

对于您需要下载的每个资源包,调用 AndroidAssetPacks.DownloadAssetPackAsync,传入资源包名称。下载资源包时,请监视下载状态,因为下载可能会暂停或失败。有两种方法可以执行此操作:

  • 定期检查 AndroidAssetPacks.DownloadAssetPackAsync 返回的 DownloadAssetPackAsyncOperation 实例。
  • 使用 AndroidAssetPacks.DownloadAssetPackAsync 的版本,该版本将回调作为其第二个参数。您传入的回调必须将 AndroidAssetPackInfo 作为可用于确定下载状态的参数。

3D建模学习工作室整理翻译,转载请标明出处!

上一篇:Unity3d:创建自定义资源包 (mvrlink.com)

下一篇:Unity3d:适用于安卓的单通道立体渲染 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号