首页 > 解决方案 > 如果收益返回不产生结果,则返回/继续代码?

问题描述

WWW class如果收益返回没有返回值(以防互联网中断),如何使代码继续执行下一步?目前,代码停留在产生价值并且不会继续。

    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]);
        
    }

标签: c#unity3d

解决方案


首先:它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]);
}

推荐阅读