如何重新加载WWW类?

时间:2017-01-03 12:13:20

标签: c# web-services unity3d

我有一个WWW类,每次使用相同的url调用 GetData 函数时都会创建该类。

现在当我运行它时,第一次 GetData 函数正在调用正在请求的url(我在webservice中有一个断点)。 然后其他时候调用Get Data并且WWW实例化,它在没有发出请求的情况下填充数据(我的服务中的断点未被命中)。

但我想在每次调用GetData时都进行一次新调用。 (要审核网络服务)

我如何启用此类行为?我究竟做错了什么? 提前致谢!

  void Start () {
        InvokeRepeating("GetData", 1.0f, 1.0f);   
    }

void GetData()
    {
        WWW www = new WWW(url);

        while (!www.isDone && string.IsNullOrEmpty(www.error))
        {
        }    

        www.Dispose();    
    }

2 个答案:

答案 0 :(得分:2)

您没有正确使用协程。实际上,您的代码段通常被视为错误的实现。你会把程序卡在循环中直到完成。

void Start () {
    InvokeRepeating("GetData", 1.0f, 1.0f);   
}

void GetData()
{
    StartCoroutine(GetDataCoroutine())    
}
IEnumerator GetDataCoroutine()
{
     WWW www = new WWW(url);
     yield return www;  
     if(string.IsNullOrEmpty(www.error) == false){ Debug.Log(www.error); } 
     www.Dispose();  
}

答案 1 :(得分:0)

问题在于数据是以某种方式兑现的。 我解决了这个问题:

WWW www = new WWW(url + "?t=" + Random.value);

这样每次我创建一个新的WWW时,我也会使用a创建一个新的请求 不同的网址(仍然调用相同的功能)。

最好完全关闭WWW请求的兑现。但这也有效。