unity游戏资源更新之AssetBundle的下载、加载、卸载(二)

一、AssetBundle的下载:把硬盘或者网络的文件读到内存一个区域,只是AssetBundle内存镜像数据块

下载方式:

1、//非缓存机制,所下载的资源文件不会被写入unity引擎的缓存区

WWW www = new WWW ("http://127.0.0.1:8080/My/AssetBundle/scene");,

2、//通过缓存机制下载的AssetBundle会被存储到unity的本地缓存区中

WWW www= WWW.LoadFromCacheOrDownload("http://127.0.0.1:8080/My/AssetBundle/scene",2);

3、//通过缓存机制下载的AssetBundle会被存储到unity的本地缓存区中

UnityWebRequest www =  UnityWebRequest.GetAssetBundle (url,2,917173786);

二、AssetBundle的加载:将AssetBundle的内容加载到内存里,并实例化AssetBundle文件中的对象。

加载方式:

1、AssetBundle.LoadFromFile ();//同步加载

AssetBundle cubeBundle=AssetBundle.LoadFromFile(Application.dataPath+"/AssetBundle/bundle");

2、 AssetBundle.LoadFromFileAsync ();//异步加载

 3、AssetBundle.LoadFromMemory ();

AssetBundle bd=	AssetBundle.LoadFromMemory (File.ReadAllBytes(path));

4、AssetBundle.LoadFromMemoryAsync ();

5、ab.LoadAllAssets ();

6、ab.LoadAllAssetsAsync ();

7、 ab.LoadAsset ();

GameObject cube = bd.LoadAsset<GameObject> ("Cube");

8、ab.LoadAssetAsync ();

同步加载在主线程

异步加载在子线程,场景加载用此方式,减少卡顿,与主线程无关

三、AssetBundle的卸载

       //释放AssetBundle文件的内存镜像,不包含load创建的Asset内存对象
        ab.Unload (true);
        //释放AssetBundle文件的内存镜像,并销毁所有load创建的Asset内存对象
        ab.Unload (false);

四、实例

使用的下载方式: UnityWebRequest.GetAssetBundle()

使用的加载方式:ab.LoadAllAssets ();

//UnityWebReauest方式下载,然后从内存加载资源
	public IEnumerator DownLoadFromServer(){
		string url = "http://127.0.0.1:8080/My/AssetBundle/scene";
		UnityWebRequest www =  UnityWebRequest.GetAssetBundle (url,2,917173786);
		//通过缓存机制下载的AssetBundle会被存储到unity的本地缓存区中
		yield return www.Send ();
		if (www.error != null) {
			Debug.Log ("下载出错" + www.error);
			yield return null;
		}
		//AssetBundle下载完成后,并不能直接使用,需要将AssetBundle加载到内存中,
		//并且创建成具体的文件对象[AssetBundle的加载]
		AssetBundle ab = DownloadHandlerAssetBundle.GetContent (www);
                ab.LoadAllAssets ();
		AsyncOperation a= SceneManager.LoadSceneAsync ("m_asset");
		yield return a;
	}

  效果:将改脚本挂载到另一个场景的摄像机上,一定要联网,服务器打开,运行就会出现另外一个场景,即使项目中目前没这个场景或者场景已经改变

注:

在web player平台上发布的网页游戏默认缓存大小为50M

在PC客户端发布的游戏和在ios/Android平台上发布的移动游戏默认缓存大小为4G 
      
        
      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值