You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中WWW.bytesDownloaded加载时不更新,文本始终显示0的修复方法

嘿,这个问题我太熟了!你当前的代码只在创建WWW对象的瞬间读取了一次bytesDownloaded,然后就直接挂起协程等整个下载完成——这就难怪文本一直显示0,完全没实时更新啦!

问题根源

WWW对象刚初始化时,下载还没真正开始或者字节数统计还没更新,你只在这时候设置了一次文本,之后就没有任何后续更新操作,自然会一直停留在初始的0值。

修复后的WWW版本代码

我们需要在下载过程中持续循环更新UI,直到下载完成:

private IEnumerator DownloadFile(){
    WWW w = new WWW(PATH_TO_DOWNLOAD);
    
    // 下载未完成时,每一帧更新一次UI
    while (!w.isDone)
    {
        // 实时刷新已下载字节数到文本控件
        bytesDownloadedText.text = w.bytesDownloaded.ToString();
        // 让协程暂停到下一帧,保证UI能正常渲染更新
        yield return null;
    }

    // 下载完成后处理结果
    if (w.error != null) {
        Debug.LogError("Error: " + w.error);
    } else {
        scriptText = w.text;
        filesDownloaded = true;
        Debug.Log(scriptText);
        // 最后再更新一次,确保显示最终的总下载字节数
        bytesDownloadedText.text = w.bytesDownloaded.ToString();
    }
}

额外建议:改用Unity官方推荐的新API

WWW已经被Unity标记为过时API(Unity 2017.1+),更推荐使用UnityWebRequest,它性能更优且功能更完善,下面是对应的实现版本:

using UnityEngine.Networking;

private IEnumerator DownloadFile(){
    using (UnityWebRequest www = UnityWebRequest.Get(PATH_TO_DOWNLOAD))
    {
        // 启动请求
        var operation = www.SendWebRequest();
        
        // 下载过程中实时更新UI
        while (!operation.isDone)
        {
            long downloadedBytes = www.downloadedBytes;
            bytesDownloadedText.text = downloadedBytes.ToString();
            yield return null;
        }

        // 处理下载结果
        if (www.result != UnityWebRequest.Result.Success)
        {
            Debug.LogError("Error: " + www.error);
        }
        else
        {
            scriptText = www.downloadHandler.text;
            filesDownloaded = true;
            Debug.Log(scriptText);
            bytesDownloadedText.text = www.downloadedBytes.ToString();
        }
    }
}

内容的提问来源于stack exchange,提问作者FlamingGenius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:28:28