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
相关产品推荐
相关产品推荐

