我正忙于更新资源(AssetBundles)更新程序/管理器的代码。我使用的是过时/废弃的WWW类,对于UnityWebRequest,我无法理解如何使这段代码再次工作:
public IEnumerator LoadByWWWAsync(string url, WWWLoadCallBack callback)
{
WWW www = new WWW(url);
LoadState loadState = new LoadState();
while (!www.isDone)
{
loadState.UpdateProgress(www);
callback(loadState, www);
yield return 0;
}
loadState.UpdateProgress(www);
callback(loadState, www);
}它呼吁:
public void UpdateProgress(ResourceRequest resourceRequest)
{
isDone = resourceRequest.isDone;
progress = resourceRequest.progress;
}通常情况下它看起来是:

但是对于UnityWebRequest,它看起来像:

我在他们的文件里没有找到关于那个案子的任何文章。还可以为UnityWebRequest和ResourceRequest挖掘整个API,并且没有发现任何关于如何转换/转换的信息,就像WWW已经做的那样。也许有人知道解决办法?
发布于 2019-03-29 15:07:51
正如错误告诉您的那样,您的方法只接受ResourceRequest作为参数,而不是UnityWebRequest。
除了明显的WWW之外,UnityWebRequest不继承ResourceRequest。
要更改它很简单,因为有UnityWebRequest.downloadProgress
把它改成
public void UpdateProgress(UnityWebRequest www)
{
isDone = www.isDone;
progress = www.downloadProgress;
}注意:
我也不知道您实际上是从哪里开始发送请求的,因此不会有任何进展:
www.SendWebRequest();比你还能用的
var www = new UnityWebResquest(URL);但请注意,这是一个通用请求,您必须自己添加诸如DownloadHandler、UploadHandler等内容,并定义类型(参见UnityWebRequest)。
在您的情况下,我宁愿使用UnityWebRequest.Get,它会自动添加所需的处理程序等等。统一还建议与using一起使用它。
using(var www = UnityWebRequest.Get(URL)
{
www.SendWebRequest();
while(!www.isDone){
...
}https://stackoverflow.com/questions/55420218
复制相似问题