前言
Unity3d 是一個跨平台的引擎,在移動互連網浪潮之中,尤其是移動遊戲3d方向上,Unity3d 毫無疑問是最耀眼的明星。Unity3d的http通訊很簡單,也非常好用,下面通過http和php
sever互動來簡單介紹一下。
http 提交資料原理
http 協議通過 url來擷取和提交資料 。提交資料的方式 有兩種,一種是get方法,一種是post方法。get一般用於告訴伺服器把滿足參數的資料發送給回來。
例如:get 的html代碼如下:
<form action="search.php" method ="GET"> <username:<inputtype="text"name="user"/><br> <password:<inputtype="password "name="pwd"/><br> <input type="submit"value="login"/> </form >
post一般是將資料發送給伺服器,伺服器將這些資料進行處理,比如說儲存到資料庫。
例如:post的html 代碼如下:
<form action="login.php" method ="POST" > <username:<inputtype="text"name="user"/><br> <password:<inputtype="password "name="pwd"/><br> <input type="submit"value="login"/> </form >
其實區別就是提交的方式不一樣,點擊login按鈕後,瀏覽器地址欄裡分別顯示如下:
get方法url為:http://127.0.0.1/serach.php?user=hortor&pwd=123
post方法url為:http://127.0.0.1
PHP服務端接收資料方法
服務端針對這兩種方式響應的有兩種方式:
get方法接收資料的方法為 $_GET[user],來接收用戶端發送的user的值。
post方法接收資料的方法為 $_POST[user]也是用來接收用戶端變數user的值。
UNITY WWW類使用方法
unity www 類同樣對應兩種提交資料的方式,常用的兩個建構函式為:
static function WWW (url : String) : WWW
static function WWW (url : String, form : WWWForm)
: WWW
第一個函數是通過get方法向伺服器發送資料,第二個是用post提交資料,其中WWWForm有個方法叫:AddField(agr : string, value : string),來添加參數。
get例子:
#pragma strictprivatevar url : String = "127.0.0.1/login.php?user=test&pwd=123";function Start () { var getData : WWW = WWW(url); yield getData; if(getData.error != null) { Debug.Log(getData.error); } else { Debug.Log(getData.text); }}
post例子:
#pragma strictprivatevar url : String = "127.0.0.1/login.php";function Start () { var form : WWWForm = new WWWForm(); form.AddField("user", "test"); form.AddField("pwd", "123"); var getData : WWW = WWW(url, form); yield getData; if(getData.error != null) { Debug.Log(getData.error); } else { Debug.Log(getData.text); }}
其中yield 這個方法是程式每一幀調用一次,當getData 執行完成,返回結果,這就相當於是非同步請求資料。WWW 類有幾個常用的靜態變數,分別為:
1、WWW.text 返回從網頁得到資料,類型為string。
2、WWW.error 返回錯誤資訊,比如說逾時,網路連接錯誤等問題。