unity UnityWebRequest下载 中 提示下载进度可以在外面调用下载进度
时间: 2024-02-18 08:01:09 浏览: 172
当使用UnityWebRequest进行下载时,你可以通过设置一个回调函数来获取下载进度,并在外部调用该函数获取下载进度。
以下是一个示例代码,展示了如何使用回调函数获取下载进度并将其保存在一个变量中:
```csharp
using UnityEngine;
using UnityEngine.Networking;
public class DownloadExample : MonoBehaviour
{
public string downloadUrl; // 下载链接
public string savePath; // 保存路径
private UnityWebRequest downloadRequest;
private float downloadProgress;
void Start()
{
downloadRequest = UnityWebRequest.Get(downloadUrl);
downloadRequest.downloadHandler = new DownloadHandlerFile(savePath);
downloadRequest.SendWebRequest();
}
void Update()
{
// 在Update函数中调用回调函数
if(downloadRequest != null)
{
downloadRequest.SendWebRequest();
// 获取下载进度
downloadProgress = downloadRequest.downloadProgress;
}
}
// 定义回调函数
public void OnDownloadProgress(float progress)
{
downloadProgress = progress;
}
// 在外部调用获取下载进度
public float GetDownloadProgress()
{
return downloadProgress;
}
}
```
在上述代码中,我们定义了一个公共的回调函数OnDownloadProgress来保存下载进度。在Update函数中,我们调用了downloadRequest.SendWebRequest()来发送下载请求,并获取下载进度保存在downloadProgress变量中。在外部,我们可以通过调用GetDownloadProgress函数来获取下载进度。
需要注意的是,UnityWebRequest的回调函数是在主线程中执行的,因此不需要使用线程同步来保证线程安全。
阅读全文