WWW Unity:不显示文字

时间:2019-05-29 12:55:24

标签: c# unity3d web

我试图将通过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时,没有得到想要的文本(它是空的!)

enter image description here

如果我尝试将链接直接(无级联)放在脚本之内,例如

new WWW("http://arnaples.altavista.org/QueryTestoITA.phpnum=CasaLuigi");
//Debug.Log("http://arnaples.altavista.org/QueryTestoITA.phpnum=" +name);

结果正确

enter image description here

为完成此操作,这是检查器中的设置

enter image description here

因此,问题是打印。解决方案?

1 个答案:

答案 0 :(得分:0)

这里有多个问题:

首先

  

我在Update函数中使用该名称,并将其插入IEnumerator函数中。

不! StartUpdate之前执行,因此您不会在其中传递名称。无论如何,在每帧都被调用的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;
            }
        }
    }
}

注意:在智能手机上键入内容,因此没有保修,但我希望这个主意会清楚