我试图将通过WWW
类链接到数据库的页面上的文本分配给我在Unity中插入的Text
(在代码linguaitaliana
中)。 / p>
通过下面建议的脚本,我将名称输入Update
函数中,并将其插入IEnumerator
函数中。
这是我的代码
public class Prova2 : MonoBehaviour
{
Prova script1;
public string name;
public Text linguaitaliana=null;
IEnumerator Start()
{
Thread.Sleep(1000);
WWW DataIta = new WWW("http://arnaples.altavista.org/QueryTestoITA.phpnum=" +name);
Debug.Log("http://arnaples.altavista.org/QueryTestoITA.phpnum=" +name);
string DataString = DataIta.text;
Debug.Log(DataString);
linguaitaliana.text = DataString;
}
void Update()
{
script1=gameObject.GetComponent<Prova>();
name=script1.due;
}
}
DataIta
是正确的,因为该链接是有效的链接。但是当我做DataIta.text
时,没有得到想要的文本(它是空的!)
如果我尝试将链接直接(无级联)放在脚本之内,例如
new WWW("http://arnaples.altavista.org/QueryTestoITA.phpnum=CasaLuigi");
//Debug.Log("http://arnaples.altavista.org/QueryTestoITA.phpnum=" +name);
结果正确
为完成此操作,这是检查器中的设置
因此,问题是打印。解决方案?
答案 0 :(得分:0)
这里有多个问题:
首先
我在Update函数中使用该名称,并将其插入IEnumerator函数中。
不! Start
在Update
之前执行,因此您不会在其中传递名称。无论如何,在每帧都被调用的Update
方法中没有意义,因此请将其移到Start
的顶部。
第二
此Thread.Sleep(1000);
毫无意义!我想您建议使用WaitForSeconds
yield return new WaitForSeconds(1);
为了等一会。
最后
您使用创建了一个http请求
WWW DataIta = new WWW("http://arnaples.altavista.org/QueryTestoITA.phpnum=" +name);
,但是您不必等到下载完成。你应该做
using(WWW DataIta = new WWW("http://arnaples.altavista.org/QueryTestoITA.phpnum=" + name))
{
yield return www;
// use result
}
通常,我建议使用UnityWebRequest.Get
而不是WWW
,因为这已经过时了,将来可能会被删除。并检查下载或连接错误
public class Prova2 : MonoBehaviour
{
Prova script1;
public string name;
public Text linguaitaliana=null;
IEnumerator Start()
{
script1=gameObject.GetComponent<Prova>();
name=script1.due;
yield return new WaitForSeconds(1);
using (var webRequest = UnityWebRequest.Get("http://arnaples.altavista.org/QueryTestoITA.phpnum=" + name))
{
// Request and wait for the desired page.
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError || webRequest.isHttpError)
{
Debug.LogFormat(this, "Download error due to {0} - {1}", webRequest.responseCode, webRequest.error);
}
else
{
Debug.Log("Download complete: " + webRequest.downloadHandler.text, this);
linguaitaliana.text = webRequest.downloadHandler.text;
}
}
}
}
注意:在智能手机上键入内容,因此没有保修,但我希望这个主意会清楚