UnityでWWW通信してみるC#編 | STUDIO yu- blog

STUDIO yu- blog

備忘録メモ。プランニングや技術関連が中心。

private string url;
public GameObject obj;

public void urlGET(string tgturl){
    if(Application.internetReachability == NetworkReachability.NotReachable){
        Destroy(gameObject);
    }
    this.url = tgturl;
    StartCoroutine("download");
}

private IEnumerator download(){
    WWW w = new WWW(url);
    yield return w;
    obj.DownloadReturn(w.text);
    w.Dispose();
    Destroy(gameObject);
}

―――――――――――――――――――――――――――――

ま、C#しか書かないんですけどね。

objはEditor上で突っ込んであげてください。
最後のDownloadReturnで、結果を受け取りたいクラスに値を渡しています。
ここではtextですが、そこはよしなに変えちゃってください。
自前のPHPでも叩くようにすると割と簡単にサーバとのやりとりが実装できちゃったりします。

さて、yieldとcoroutineとかいう気持ち悪いシロモノですが、
ポイントは

非同期メソッドはIEnumeratorで作る
・StartCoroutineで呼び出す

の2点です。
IEnumerator云々はよく書いてあるんですが、
StartCoroutineで呼び出すところでハマりがち。っていうかハマった。

なんとなく気持ち悪いのでprivateで書いてますが、気分の問題な気もします。
ちなみに、上記urlGETメソッドの最初で、
ネットワーク接続の有無を確認しています。ご参考までにどうぞ。

WWWクラスはメモリ食うらしいので、こいつをプレハブ化してやって
適宜Instantiate/Destroyしてやってください。