如果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]);
}
答案 0 :(得分:3)
首先:WWW
很久以前已经过时了!
您应该使用UnityWebRequest
!
然后添加错误检查。成功阅读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]);
}