Unity3d WWWForm仅适用于Start()

时间:2014-10-28 14:59:48

标签: c# unity3d

我有以下代码可以正常工作,并根据需要将数据发送到服务器:

IEnumerator Start () {
        Diffculty d = Diffculty.getInstance ();
        int level = d.getDiffculty ();
        WWWForm form = new WWWForm();
        form.AddField( "highscore", 1000);
        form.AddField( "name", stringToEdit);
        form.AddField( "level", level);
        WWW download = new WWW( url, form );
        yield return download;
        if((!string.IsNullOrEmpty(download.error))) {
            Debug.Log("Error downloading: " + download.error );
        } else {
            Debug.Log(download.text);
            doWindow0 = false;
        }
    }

但是我现在想要在guiwindow按下按钮时触发此代码,所以请使用以下代码。

IEnumerator senddata(){
        Diffculty d = Diffculty.getInstance ();
        int level = d.getDiffculty ();
        WWWForm form = new WWWForm();
        form.AddField( "highscore", 1000);
        form.AddField( "name", stringToEdit);
        form.AddField( "level", level);
        WWW download = new WWW( url, form );
        yield return download;
        if((!string.IsNullOrEmpty(download.error))) {
            Debug.Log("Error downloading: " + download.error );
        } else {
            Debug.Log(download.text);
            doWindow0 = false;
        }
    }
    void DoWindow0(int windowID) {
        stringToEdit = GUILayout.TextField (stringToEdit, 25);
        if (GUILayout.Button ("Submit Score")) {
            senddata();
        }
    }
    void OnGUI() {
        //doWindow0 = GUI.Toggle(new Rect(10, 10, 100, 20), doWindow0, "Window 0");
        if (doWindow0)
            GUI.Window(0, windowRect, DoWindow0, "");

    }

然而,当我按下按钮(“提交分数”)时,似乎没有任何事情发生,服务器也没有收到数据

1 个答案:

答案 0 :(得分:0)

这是因为您没有调用StartCoroutine(sendData())。调用发送数据只返回循环遍历方法所需的IEnumerator值,而StartCoroutine使用IEnumerator值实际完成方法。