Unity中WWW的应用


    由于手动配置环境很复杂。。。小弟搞了半天还是决定采用e2php (一键Apache + PHP + MySQL + Zend套件)搭建WEB服务器环境。接下去将一点点的来研究Unity是如何向WEBfuwuqi发送数据,WEB服务器到数据后如何向Unity返回数据。

   第一个示例:

   先通过一个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);
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值