• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

游戏开发

Unity的WWW类的用法整顿

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2019/0929/664.html

 
在应用百度语音的时候用到了WWW类向指标服务器发送要求。这里常州微信小程序开发看了一名博主整顿的相关方式来举行常识进修稳定。
Unity的WWW类的用法整顿
1. Unity的WWW类要紧支撑GET 和POST两种方式。GET方式要求的内容会附在url的背面一起做为URL向服务器发送要求(要求的内容应用&象征隔开);而POST方式中向服务器发送要求的数据因此一个数据包的形式和url张开传送的,比拟GET方式,POST的好处:1.比GET安全;2.传输数据没有长度限制;  综上常州网站开发建设所述:在名目中应用POST  方式多少许。 如下为详细的用法,由于GET用法简略,要紧说POST的用法:
(1).一种GET方式:
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
public string url = "http://homeqin.cn/1.jpg";
IEnumerator Start() {
//在C#中,需求用到yield的话,必须确立在IEnumerator类中实行。
WWW www = new WWW(url);
//定义www为WWW类型而且等于所下载下来的WWW中内容。
yield return www;
//回笼所下载的www的值
renderer.material.mainTexture = www.texture;
//将下载下来的WWW中的图片付与到默认物体的材质长举行渲染出来
}
}
这也是GET方式:
 IEnumerator IGetData()
    {
        WWW www = new WWW("http://127.0.0.1/Test.php?username=get&password=12345");
 
 
        yield return www;//守候Web服务器的反应
 
 
        if (www.error != null)
        {
            m_info = www.error;
            yield return null;
        }
 
 
        m_info = www.text;
    }
(2)底下说说游戏开发运营POST方式:
说到POST方式,就要说一下WWWForm网络表单,帮助类,用来生成表单数据,用来存储WWW类中要走访服务器的数据;这里有几个参数:
WWWForm.headers 表单头   
 var headers :Hashtable       
(只读)为应用WWW类传递的表单回笼一个正确的要求头。这个域只包括一个头,/"Content-Type"/为表单设置正确的mine类型。"application/x-www-form-urlencoded"用于普通的表单,"multipart/form-data"用于应用AddBinaryData增加表单包括数据。   同理,WWWForm的数据格式也是应用的哈希表来存储的数据,即键名对应一个值,留意这些键名是string类型的,而且是在服务器端可以或许被辨认的(可以或许读取其留存的值这样一个名字,又大概说内陆的表单中存放的数据格式是和服务器端开发职员商议好的,定了数据的传输和谈的即数据格式(变量的挨次等等))
IEnumerator IPostData()(上传数据,而后获取从服务器端读到的数据)
    {
        System.Collections.Hashtable headers = new System.Collections.Hashtable();
        headers.Add("Content-Type", "application/x-www-form-urlencoded");//哈希表的数据格式
 
        string data = "username=post&password=6789";
        byte[] bs = System.Text.UTF8Encoding.UTF8.GetBytes(data);
 
 
        WWW www = new WWW("http://127.0.0.1/Test.php", bs, headers);
 
 
        yield return www;
 
 
        if (www.error != null)
        {
            m_info = www.error;
            yield return null;
        }
 
 
        m_info = www.text;
    }
有一个常州手游开发例子:((上传图片,而后获取从服务器端读到的图片数据)
IEnumerator IRequestPNG()
    {
        byte[] bs = m_uploadImage.EncodeToPNG();////将图片转化为Byte[]数组
 
 
        WWWForm form = new WWWForm();
        form.AddBinaryData("picture", bs, "screenshot", "image/png");
 
 
        WWW www = new WWW("http://127.0.0.1/Test.php", form);
 
 
        yield return www;
 
 
        if (www.error != null)
        {
            m_info = www.error;
            yield return null;
        }
 
 
        m_downloadTexture = www.texture;
 
 
    }
例如这种用法即是涉及到表单以及表单数据:
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
public WWWForm form = new WWWForm();
public System.Collections.Hashtable headers = form.headers;
form.AddField("name", "value");
form.AddField("score", "value");
public byte[] rawData = form.data;public string url = "www.myurl.com";public WWW www = new WWW(url, rawData, headers);public IEnumerator Awake() {headers["Authorization"] = "Basic " + System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes("username:password"));yield return www;}} 
这里有一个延长: 从常州游戏开发培训服务器端获取数据每每需求应用Json分析,获取在游戏之中可以平常应用的数据,底下整顿Json分析的常识:
(1).需求把Json分析用到的Json文件放到Unity名目的Plugins文件夹底下,这时筹办事情
(2).以一个例子分析Json分析完成的历程,例子如下:
publicvoidResolveJson()
{
                //定义的JSON字符串,留意JSON的格式
stringstr=@"
            {
                ""Name""     : ""homeqin"",
                ""Age""      : 26,
                ""Birthday"" : ""1998-06-17"",
""Thumbnail"":[
{
           ""Url"":    ""http://huantian.com"",
           ""Height"": 256,
           ""Width"":  ""200""
},
{
           ""Url"":    ""http://baidu.com"",
           ""Height"": 1024,
           ""Width"":  ""500""
}
 
]
            }";
//这里是分析,包括整形与字符串
JsonDatajd=JsonMapper.ToObject(str);//若是从服务器端读到的数据,则str应该换为www.Text(条件是Text的数据格式是Json类型的)
Debug.Log("name = "+(string)jd["Name"]);
Debug.Log("Age = "+(int)jd["Age"]);
Debug.Log("Birthday = "+(string)jd["Birthday"]);
JsonDatajdItems=jd["Thumbnail"];
 
for(inti=0;i<jdItems.Count;i++)
{
Debug.Log("URL = "+jdItems[i]["Url"]);
Debug.Log("Height = "+(int)jdItems[i]["Height"]);
        Debug.Log("Width = "+jdItems[i]["Width"]);
}
}
 
 

上篇:上一篇:unity UI血条ui
下篇:下一篇:Unity根底包 FirstPersonController下的MouseLook 脚本研讨