首页 > 解决方案 > 三个 JS DefaultLoadingManager onProgress 函数首先返回错误的总项目数

问题描述

我使用此代码来计算加载百分比:

THREE.DefaultLoadingManager.onProgress = (item, loaded, total) => {
        console.error(loaded / total * 100);
};

它达到大约 80%,然后返回到 60%,然后达到 90%,然后返回到 80%。

经过一番调试,我发现总项目数先是25个,然后增加到35个左右,然后达到52个。

这种增加是因为 JSONLoader。我加载了一些对象,这些对象有材料作为图像,所以 onProgress 函数将这些图像添加到要加载的项目总数中。

我想知道如何知道开始时要加载的实际项目数(52)。如果不可能,如何解决从80%到60%的倒退?

标签: three.jsloading

解决方案


你可以做几件事:

您可以运行一次负载,并将结果记录为最终计数,并对其进行硬编码以供下次运行。

或者..

使用 GLTF 之类的格式,嵌入所有资产。然后你会得到每个模型一件。

或.. 并行关闭所有负载.. 不要响应前几个 onProgress.. 并希望在开始显示进度之前捕获完整的项目数..

或者.. 制作一个进度条,始终按剩余时间的某个百分比前进,并可能调整该百分比以大致匹配单台机器上的加载时间,或者在获得有关剩余负载的更多信息时动态调整它。


推荐阅读