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

UE4.27.2分块下载系统打印-nan(ind)问题求助

解决UE4.27分块下载进度显示-nan(ind)的问题

问题根源

你看到的-nan(ind)是除以0导致的非数字结果。当下载还未启动、已完成,或没有需要下载的内容时,TotalBytesToDownload(总需下载字节数)或TotalChunksToMount(总需挂载分块数)会是0,直接做除法就会触发这个错误。

修复代码

修改你的GetLoadingProgress函数,添加判断逻辑避免除以0:

void UPatchingGameInstance::GetLoadingProgress(int32& BytesDownloaded, int32& TotalBytesToDownload, float& DownloadPercent, int32& ChunksMounted, int32& TotalChunksToMount, float& MountPercent) const
{
    TSharedRef<FChunkDownloader> Downloader = FChunkDownloader::GetChecked();
    FChunkDownloader::FStats LoadingStats = Downloader->GetLoadingStats();

    BytesDownloaded = LoadingStats.BytesDownloaded;
    TotalBytesToDownload = LoadingStats.TotalBytesToDownload;

    ChunksMounted = LoadingStats.ChunksMounted;
    TotalChunksToMount = LoadingStats.TotalChunksToMount;

    // 处理下载百分比,避免除以0
    if (TotalBytesToDownload > 0)
    {
        DownloadPercent = ((float)BytesDownloaded / (float)TotalBytesToDownload) * 100.0f;
    }
    else
    {
        // 无下载需求时直接设为100%,也可根据需求改为0%
        DownloadPercent = 100.0f;
    }

    // 处理挂载百分比,避免除以0
    if (TotalChunksToMount > 0)
    {
        MountPercent = ((float)ChunksMounted / (float)TotalChunksToMount) * 100.0f;
    }
    else
    {
        // 无挂载需求时直接设为100%,也可根据需求改为0%
        MountPercent = 100.0f;
    }
}

额外说明

  • 编译修改后的代码,重启UE编辑器再测试即可正常显示百分比。
  • 也可以在蓝图层做补充判断:调用函数后先检查总字节数/总分块数是否为0,再决定是否打印进度,或显示“准备中”这类提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:54:41