返回/继续代码,如果收益率收益不产生结果?

时间:2020-06-25 09:19:09

标签: c# unity3d

如果WWW class的收益率返回的值不返回值(如果Internet断开),如何使代码继续进行下一步? 目前,代码停留在产生价值的位置,无法继续进行。

    void Start()
    {
    
    StartCoroutine(GetTimers());
     
    }

    IEnumerator GetTimers()
    {
        WWW data = new WWW("http://TimerWebsiteHosting.com/GetTimers.php");
        yield return data;
        dataString = data.text;

        Items = dataString.Split(';');

        Timer1 = int.Parse(Items[0]);
        Timer2 = int.Parse(Items[1]);
        
    }

1 个答案:

答案 0 :(得分:3)

首先:WWW很久以前已经过时了!

您应该使用UnityWebRequest


您可以使用UnityWebRequest.timeout

设置超时

然后添加错误检查。成功阅读data.downloadHandler.text

IEnumerator GetTimers()
{
    using(UnityWebRequest www = UnityWebRequest.Get("http://TimerWebsiteHosting.com/GetTimers.php"))
    {
        // wait up to one second or whatever you want to use as timeout
        www.timeout = 1;

        yield return www.SendWebRequest();

        if (www.isNetworkError || www.isHttpError)
        {
            Debug.LogError($"Downlaod failed with {www.responseCode} - {www.error}", this);
            yield break;
        }
        
        dataString = www.downloadHandler.text;
    }

    Items = dataString.Split(';');

    Timer1 = int.Parse(Items[0]);
    Timer2 = int.Parse(Items[1]);
}
相关问题