- WWW是一个Unity开发中非常常用到的工具类,主要提供一般Http访问的功能,以及动态从网上下载图片、声音、视频Unity资源等。主要支持的协议有:
* https://
* file://(访问本地文件)
* ftp://(只支持匿名账号)
- WWW加载网络资源:这里指的网络资源指图片,文本,视频,音频等各种格式的资源。实际上WWW类具有很多实用的属性与资源对应:
* assetbundle:AssetBundle的数据流,可以包含项目文件夹中的任何类型资源。
* audioClip(声音):从下载的数据,返回一个AudioClip。(只读)。
* bytes(字节数组):以字节组的形式返回获取到的网络页面中的内容(只读)。
* movie(视频):从下载的数据返回一个MovieTexture(只读)。
* text(文本、XML、Json):通过网页获取并以字符串的形式返回内容(只读)。
* texture(图片):从下载的数据返回一个Texture2D
- AssetBundle文件的下载与加载:
下载:
非缓存机制:WWW www=new WWW(url);yield return www;
缓存机制:WWW.LoadFromCacheOrDownload();
加载:www.assetBundle.LoadAsset() as XXX;
- 卸载从AssetBundle加载的资源:
1.bundle.Unload(false);
参数为false:只会卸载AssetBundle自身,不会对从Assetbundle中加载的资源有任何影响;
参数为true:AssetBundle自身及从Assetbundle中加载的资源都会被卸载(无论他们是否还在被使用)
2.Resources.UnloadUnusedAssets();作用范围为整个系统。
- 卸载实例化的GameObject:
1.GameObject.Destroy(obj,2);推荐使用
2.GameObject.DestroyImmediate(obj);有延迟
- 卸载WWW资源:
1.www=null;
2.www.Dispose();
3.使用using(){}语法
--------------------------WWW.LoadFromCacheOrDownload---------------------------
- 从缓存加载带有指定版本号的AssetBundle。如果AssetBundle不在当前缓存,它将自动下载并储存在缓存,以便以后从本地存储检索。
- 使用using语法,www.Dispose将在加载完成后调用,释放内存。
- 代码中的路径path为模拟服务器wamp/www/assetbundle/moshushi。
- moshushi为http://blog.sina.com.cn/s/blog_1322690230102xry2.html打包的moshushi
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class MyWWW : MonoBehaviour {
private string path="http://localhost/assetbundle/moshushi";
public RawImage image;
void Update () {
if(Input.GetMouseButtonDown(0))
{
StartCoroutine(LoadTexture());
}
}
IEnumerator LoadTexture()
{
Caching.ClearCache();
using (WWW www = WWW.LoadFromCacheOrDownload(path, 5))
{
yield return www;
if (www.isDone)
{
AssetBundle bundle = www.assetBundle;
Texture2D tex = bundle.LoadAsset("fk02_02_moshushi") as Texture2D;
image.texture = tex;
bundle.Unload(false);
}
}
}
}