2013-03-25 71 views
-1

我张贴值Web服务,让来自同一Web服务响应和我在使用WWWForm Unity3dUnity3d www.progress iOS中

不工作。现在我想等到响应没有完全加载。为此

我已经使用yield www;但它工作不正常。之后,我发现www.progress

它的工作在我Unity3d播放器,但它不是在iPhone或iPad上运行。

EDIT1:我正在使用Javascript。

EDIT2:我的代码:

function getSettingsValues(){ 


    var strResponse; 

    userID = PlayerPrefs.GetString("userid"); 
    arrLevels.Clear(); 

    print("First"); 
    var url = "http://WEBSERVICE"; 

    var form = new WWWForm(); 

    form.AddField("userid",userID); 

    var www = new WWW(url, form); 

    yield www; 

    if (www.error == null) 
    { 
     strResponse = www.text; 
    } 


    print("Response "+strResponse); 
} 

回答

1

您的代码应该是这样的:

function PostMyForm() 
{ 
    var form:WWWForm = new WWWForm(); 
    // todo: add form variables 
    var www:WWW = new WWW(url, form); 
    yield www; 
    // todo: parse response 
} 

然后用StartCorotuine调用它。

StartCoroutine(PostMyForm()); 

,或者,如果你已经在协同例程:

yield StartCoroutine(PostMyForm()); 
+0

我想停止线程,直到没有加载的响应。你现在有什么替代吗? – Yashesh 2013-03-25 06:38:19

+0

联合程序是最好的。确保你调用StartCoroutine(YourPostMethod())来确保javascript实际上使用了co-rotuine。然后当你等待它完成时它可以用来阻止你(即使进展不起作用,它也会完成或失败)。 – peterept 2013-03-25 06:50:23

+0

你能解释一下吗? – Yashesh 2013-03-25 06:54:21

0
while (!www.isDone) 
{ 
    yield return www; 
} 

你可以试试这个代码,而不是直接返回,进度下载部分资产,它只返回0或者当您尝试访问Web服务时为1。

+0

我正在使用JavaScript,所以上面的代码将无法正常工作。 – Yashesh 2013-03-25 06:42:02