Unity3D iOS 平台放弃 WWW 采用 UnityWebRequest

13 篇文章 0 订阅

使用的是 Unity 5.3.4, WWW 再 iOS 上加载资源出现卡死的问题:加载到一定程度卡死,重启APP后又可以跑过去,有些机型上甚至出现下载资源过不去的情况。解决方案,使用 UnityWebRequest 代替 WWW。当然 UnityWebRequest 次版本的 Dispose 有问题,更新到最新版就没问题了。


UnityWebRequest 架构

 

UnityWebRequest  由三个元素组成。

◾UploadHandler        处理数据  将数据发送到服务器 的对象

◾DownloadHandler    从服务器接收数据 的对象

◾UnityWebRequest      负责 HTTP 通信流量控制来管理上面两个对象的对象。

来说明这些对象之间的关系,如下所示。



基本用法

 

比较UnityWebRequest 和 WWW 类的基本用法。

GET

www 通过 url 的写法:


using UnityEngine;  
using System.Collections;  
   
class MyBehaviour :  public MonoBehaviour {  
    void Start() {  
        StartCoroutine(GetText());  
    }  
   
    IEnumerator GetText() {  
        WWW request =  new WWW("http://example.com");  
   
        yield return request;  
   
        if (! string .IsNullOrEmpty(request.error)) {  
            Debug.Log(request.error)  
        } else {  
            //   
            if (request.responseHeaders.ContainsKey("STATUS") &&  
                    request.responseHeaders["STATUS"] == 200) {  
                //  
                string text = request.text;  
   
                //   
                byte [] results = request.bytes;  
            }  
        }  
    }  
}  

UnityWebRequest书写方式


using UnityEngine;  
using System.Collections;  
using UnityEngine.Experimental.Networking;  
//   
// using UnityEngine.Networking;  
   
class MyBehaviour :  public MonoBehaviour {  
    void Start() {  
        StartCoroutine(GetText());  
    }  
   
    IEnumerator GetText() {  
        UnityWebRequest request = UnityWebRequest.Get("http://example.com");  
        //   
        // UnityWebRequest request = new UnityWebRequest("http://example.com");  
        //   
        // request.method = UnityWebRequest.kHttpVerbGET;  
   
        //   
        yield return request.Send();  
   
        //   
        if (request.isError) {  
            Debug.Log(request.error);  
        } else {  
            if (request.responseCode == 200) {  
                //   
                string text = request.downloadHandler.text;  
   
                //   
                byte [] results = request.downloadHandler.data;  
            }  
        }  
    }  
}  



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值