第一个示例:
先通过一个UI界面提供的两个按钮,分别使用GET和POST方法向服务器提交数据,创建脚本命名为WebManager.cs,将其指定给场景中的任意游戏体
using UnityEngine;
using System.Collections;
public class WebManager : MonoBehaviour {
string m_info = "Nothing"; // 用以返回Web服务器发送到Unity的数据
public Texture2D m_uploadImage;
protected Texture2D m_downloadTexture;
protected AudioClip m_downloadClip;
// Use this for initialization
void Start () {
StartCoroutine(DownloadSound());
}
// Update is called once per frame
void Update () {
}
void OnGUI(){
GUI.Label(new Rect(10,10,400,30),m_info);
if(GUI.Button(new Rect(10,50,150,30),"Get Data")){
StartCoroutine(IGetData());
} // 通过GET方式获取数据
if(GUI.Button(new Rect(10,100,150,30),"Post Data")){
StartCoroutine(IPostData());
} // 通过POST方式获取数据
if(m_downloadTexture !=null)
GUI.DrawTexture(new Rect(0,0,m_downloadTexture.width,m_downloadTexture.height),m_downloadTexture);
if(GUI.Button(new Rect(10,150,150,30),"Request Image")){
StartCoroutine(IRequestPNG());
}
}
IEnumerator IGetData(){
//new一个WWW用于接收URL
WWW www = new WWW("http://localhost:8080/test.php?username=get&password=12345");
yield return www; //yield会等待www的url地址加载完成后再执行下面的语句
if(www.error !=null){
m_info = www.error;
yield return null;
}
m_info = www.text; // WWW.Text是将网页的内容通过字符串的形式返回给m_info变量
}
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://localhost:8080/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(); // Texture对象 吗,
WWWForm form = new WWWForm();
form.AddBinaryData("picture",bs,"screenshot","image/png");
WWW www = new WWW("http://localhost:8080/test.php",form);
yield return www;
if(www.error !=null){
m_info = www.error;
yield return null;
}
m_downloadTexture = www.texture;
}
IEnumerator DownloadSound(){
WWW www = new WWW("http://localhost:8080/music.wav");
yield return www;
if(www.error !=null){
m_info = www.error;
yield return null;
}
m_downloadClip = www.GetAudioClip(false);
audio.PlayOneShot(m_downloadClip);
}
}