3

我必须管理我的 RAM,所以想即时加载/卸载我所有的 ngui 页面。为此,我使用预制件创建了 AssetBundle,并将这些 AssetBundle 保存在我的 apk 中

在 android 设备上加载/卸载它们的方法是什么。

我大致了解 AssetBundle.CreateFromMemory,但无法实现

我正在以正确的方式思考或遗漏一些东西。

任何帮助/??

4

1 回答 1

2

我认为你的方式是正确的。Unity 支持项目中的资源文件夹,以允许在主游戏文件中提供内容,但在请求之前不加载。在 Unity Pro、Unity iOS Pro(以前称为“iOS Advanced”)和 Unity Android Pro(以前称为“Android Advanced”)中,您还可以创建 Asset Bundle。这些是与主游戏文件完全分开的文件,其中包含游戏可从文件或 URL 按需访问的资产。

AnAsset Bundle是资产的外部集合。您可以拥有许多资产包,因此可以拥有许多不同的外部资产集合。这些文件存在于内置的 Unity 播放器之外,通常位于 Web 服务器上,供最终用户动态访问。

要构建 Asset Bundle,您可以BuildPipeline.BuildAssetBundle()从编辑器脚本内部调用。在参数中,您指定要包含在构建文件中的对象数组以及其他一些选项。这将构建一个文件,您以后可以使用AssetBundle.Load().

您可以通过调用来卸载 AssetBundle 的资源AssetBundle.Unload()。如果您为 unloadAllLoadedObjects 参数传递 true,则由 内部保存的对象AssetBundle和使用从 AssetBundle 加载的对象AssetBundle.Load()都将被销毁,并且捆绑使用的内存将被释放。

有时您可能更喜欢加载 AssetBundle,实例化所需的对象并释放捆绑包使用的内存,同时保留对象。好处是您可以为其他任务释放内存,例如加载另一个 AssetBundle。在这种情况下,您将传递 false 作为参数。捆绑包被销毁后,您将无法再从中加载对象。

如果您想Resources.Load()在加载另一个关卡之前销毁使用加载的场景对象,请调用Object.Destroy()它们。要释放资产,请使用Resources.UnloadUnusedAssets().

在Unity 文档中阅读整个故事。

于 2013-02-25T11:21:52.343 回答