返回介绍

Loading resources from AssetBundles

发布于 2021-06-19 18:03:25 字数 1589 浏览 928 评论 0 收藏 0

加载和卸载资源包 (AssetBundle) 中的对象

使用下载的数据构建资源包 (AssetBundle) 对象后,可以使用三种不同的方法加载其中包含的对象:

  • AssetBundle.Load 会将其名称标识符用作参数加载对象。其名称即工程 (Project) 视图中显示的名称。可选择将对象类型作为参数传递到 Load 类函数,确保加载的是特定类型的对象。
  • AssetBundle.LoadAsync 的作用原理与上述 Load 类函数相同,但不会在加载资源后阻塞主线程。此方法对于加载较大资源或一次加载多个资源很有用,可避免应用程序停止运行。
  • AssetBundle.LoadAll 将加载资源包 (AssetBundle) 中的所有对象。和 AssetBundle.Load 一样,可以按照其类型选择性地过滤对象。

要卸载资源,需要使用 AssetBundle.Unload。这个类函数包含一个布尔参数,可告诉 Unity 是卸载所有数据(包括已加载的资源对象),还是只卸载已下载资源包中的压缩数据。如果应用程序正在使用此资源包 (AssetBundle) 中的一些对象,并且需要释放一些内存,则可传递 false 以便卸载内存中的已压缩数据。如需完全卸载该资源包 (AssetBundle) 的所有对象,则应传递 true,以便销毁从资源包加载的资源 (Assets)。

从资源包 (AssetBundles) 异步加载对象

可使用 AssetBundle.LoadAsync 类函数异步加载对象,从而降低应用程序暂时中断的可能性。

using UnityEngine;

// Note:This example does not check for errors.Please look at the example in the DownloadingAssetBundles section for more information
IEnumerator Start () {
	// Start a download of the given URL
	WWW www = WWW.LoadFromCacheOrDownload (url, 1);

	// Wait for download to complete
	yield return www;

	// Load and retrieve the AssetBundle
	AssetBundle bundle = www.assetBundle;

	// Load the object asynchronously
	AssetBundleRequest request = bundle.LoadAsync ("myObject", typeof(GameObject));

	// Wait for completion
	yield return request;

	// Get the reference to the loaded object
	GameObject obj = request.asset as GameObject;

// Unload the AssetBundles compressed contents to conserve memory
bundle.Unload(false);
}

返回资源包 (AssetBundles) 简介

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文