ue3d在Unity3D中加载资产包

在Unity3D中加载资产包

分类:
ue3d - 在Unity3D中加载资产包

在本文中,3D天堂向大家解释如何在Unity项目中加载资产包,大家可以参考此文在Unity中创建资产包。

Unity加载资产包

可以在本地或从URL加载资产包,首先使用WWW类下载资产包,然后可以从包中加载对象,可以使用WWW类的方法下载资产包。

非缓存

使用WWW类的对象下载数据,不会缓存在设备的本地存储中。

void Start () {
		string url = "your url";
		StartCoroutine (loadWWWNonCaching (url));
	}
IEnumerator loadWWWNonCaching (string url){
		WWW www = new WWW (url);
		yield return www;
		if (string.IsNullOrEmpty(www.error)) {
			AssetBundle assetBundle = www.assetBundle;
		} else {
			Debug.Log ("WWW error: " + www.error);
		}
	}

缓存:WWW

LoadFromCacheOrDownload方法可以从缓存内存或通过下载加载资产包,如果缓存是干净的,那么它将下载资产包,否则它将从缓存内存加载资产包。

资产包被缓存到本地存储设备中的Unity缓存文件夹中,不同平台(web player, android, mac)缓存大小不同,但Unity网络播放器允许缓存50MB的数据。

	void Start () {
		string url = "your url";
		StartCoroutine (loadWWWCaching (url));
	}
	IEnumerator loadWWWCaching (string url){
		while (!Caching.ready)
			yield return null;
		using (WWW www = WWW.LoadFromCacheOrDownload (url, 1)) {
			yield return www;
			if (string.IsNullOrEmpty(www.error)) {
				AssetBundle assetBundle = www.assetBundle;
			} else {
				Debug.Log ("WWW error: " + www.error);
			}
		}
	}

还可以使用AssetBundle.LoadFromFile(“Your path”)方法从文件加载资产包,通常可以将资产存储在应用程序流媒体资产文件夹中,并可以从那里加载。

从资产包中加载游戏对象

首先从下载的数据中创建一个AssetBundle类的对象,然后可以从该资产包中加载对象,可以使用下面提到的AssetBundle类方法从资产包中加载对象。

  1. LoadAsset:此方法将按名称加载对象,传递要加载的对象的名称。
  2. LoadAssetAsync : 与上述方法相同,但异步加载对象;所以不会阻塞应用程序的主线程。
  3. LoadAllAssets:此方法将加载资产包中的所有对象。

从资产包中加载游戏对象后,将其实例化以在场景中使用。

AssetBundle assetBundle = www.assetBundle;
// Load asset by name
GameObject gObject = assetBundle.LoadAsset("name of your game object") as GameObject;

// load asset asynchronously
AssetBundleRequest request = assetBundle.LoadAssetAsync ("name of your game object", typeof(GameObject));
// Wait for request to complete
    yield return request;
    GameObject gObject2 = request.asset as GameObject;

// load all assets
assetBundle.LoadAllAssets();

// instantiate the game object
if (gObject != null) {
  Instantiate (gObject);
}

从资产包加载场景

首先从关联的场景资产包中加载所有资产,然后使用SceneManager.LoadScene方法加载场景。

assetBundle.LoadAllAssets();
SceneManager.LoadScene ("name of scene");

卸载资产包

从资产包中加载对象后,使用AssetBundle卸载资产包,卸载方法这有助于节省内存并提高性能。

assetBundle.Unload (true);

以上是3D天堂关于在Unity中加载资产包的全部内容,如果你有任何反馈,请随时在本页面下方留言。

相关信息

  • 类型:知识
  • 字数:536
  • 字符:2876
  • 适用软件:Unity
  • 说明:无
  • 编号:154851

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!