赞
踩
using UnityEngine; using UnityEngine.Experimental.Networking; using System.Collections; class MyBehaviour: public MonoBehaviour { void Start() { StartCoroutine(GetText()); } IEnumerator GetText() { using(UnityWebRequest www = UnityWebRequest.Get("http://www.my-server.com")) { yield return www.Send(); if(www.isError) { Debug.Log(www.error); } else { // Show results as text Debug.Log(www.downloadHandler.text); // Or retrieve results as binary data byte[] results = www.downloadHandler.data; } } } }
这是Unity5.4 中提供的 API, 为了代替WWW 以满足今天的 HTTP 通信的需求. 看官方文档,Unity5.2, 5.3 ,5.4 也是会有的!
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; } } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。