Unity WWW的用法

</pre>AssetBundle 动态加载场景<p></p><p></p><pre name="code" class="csharp">           WWW download = WWW.LoadFromCacheOrDownload("file://E:/MirPenUU/sence_gamefarm.ab", 1);
<span style="white-space:pre">	</span>   //两种方法都可以
<span style="white-space:pre"></span><pre name="code" class="csharp"><span style="white-space:pre">	</span>  WWW download = new WWW(<span style="font-family: Arial, Helvetica, sans-serif;">"file://E:/MirPenUU/sence_gamefarm.ab"</span><span style="font-family: Arial, Helvetica, sans-serif;">);</span>
if (download.error != null) { Debug.LogError(download.error); } AssetBundle bundle = download.assetBundle; Application.LoadLevel("GameFarm1");


www上传文件

  IEnumerator getTexture2d()
    {
	 WWWForm form = new WWWForm();
        form.AddField("gid", "456");
        form.AddField("uid", "1");
        form.AddField("type", UpStr);
        form.AddBinaryData("file", m_Tex.EncodeToJPG()); //文件为二进制
        wwwProcess = new WWW(Constant.UPDATE_URL, form);

        yield return wwwProcess; 
       
        if (wwwProcess.error == null)
        {
            //成功
        }
        else
        {      
           //失败
        }
}

www 带参数网络请求

 IEnumerator HTTPClient(string str)
    {
        Debug.Log("zdp HTTPClient :" + str);
        WWWForm form = new WWWForm ();
        form.AddField("id", Constant.uuid);
        form.AddField("op", str);
        WWW www = new WWW(Constant.CONTROL_URL, form);
        yield return www;
        if (www.error != null)
            Debug.Log(" result Erro zdp:" + www.error);
        else
        {
            fastHit(www.text);
        }
    }

网络请求显示滚动条

    void Update()
    {
        if (this.www != null && progressSlider != null && !this.www.isDone)
        {
            this.progressSlider.value = this.www.progress;
        }
    }


www在不同平台路径的使用方法


#if UNITY_STANDALONE_WIN

            filepath = "file://" + Application.dataPath + "/StreamingAssets/" + jsonName;
#endif

#if UNITY_ANDROID
            filepath = Application.streamingAssetsPath + "/" + jsonName;
#endif
#if UNITY_IOS
            filepath = Application.streamingAssetsPath + "/" + jsonName;
#endif




Unity引擎中的`WWW.LoadFromCacheOrDownload()`方法是一个用于异步下载资源的API,它会在本地缓存中查找资源,如果找到则直接加载,如果没有则开始网络下载。这个方法通常用于游戏场景中的预加载或资源获取,可以避免频繁地访问网络。 如果你想要寻找替代方法,有以下几个考虑: 1. 使用`UnityWebRequest`:这是Unity官方推荐的HTTP请求库,提供了更细粒度的控制,比如设置超时、处理响应状态码等。你可以创建一个新的`UnityWebRequest`实例,然后通过`GetAsync`、`DownloadHandlerFile`等方法来实现下载操作,并通过回调函数处理结果。 ```csharp using UnityEngine; using System.Collections.Generic; using UnityEngine.Net; public class CustomLoader : MonoBehaviour { public void LoadAsset(string url) { UnityWebRequest www = UnityWebRequestTexture.GetAsync(url); www.downloadHandler = new DownloadHandlerFile(); www.SendWebRequest(); www.OnProgress += OnProgressChanged; // 自定义进度监听 www.OnComplete += OnCompletion; // 下载完成后的回调 } private void OnProgressChanged(UnityWebRequest www) { // 更新下载进度... } private void OnCompletion(UnityWebRequest www) { if (www.isNetworkError || www.isHttpError) Debug.LogError(www.error); else { Texture2D texture = DownloadHandlerTexture.GetContent(www) as Texture2D; // 处理下载成功的纹理... } } } ``` 2. `AsyncOperation`或`Coroutine`:如果你需要更细致的控制流程,可以使用`async/await`配合`Coroutine`进行逐层调度。 3. 利用第三方插件或库:市场上有许多第三方资源管理库,如uLoad、NGUI等,它们可能提供更好的用户体验和功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值