声纳问题:更新此功能,使其实现与第159行的功能不同



我试图通过修复声纳的所有问题来让我的项目变得更好,但我被标题中显示的错误卡住了。该函数是在three.js和sonar的帮助下加载一个搅拌机模型,并告诉我不要多次使用该函数,但我需要使用该函数加载多个模型。

function raining(temp, timezone) {
let rain = [];

function loadGLTF() {
let Loader = new GLTFLoader();
Loader.load("./model/rain.gltf", (gltf) => {
Mesh = gltf.scene;
Mesh.scale.set(0.2, 0.2, 0.2);
scene.add(Mesh);
camera.target = Mesh;
Mesh.position.x = 0;
Mesh.position.y = -0.4;
Mesh.position.z = 0;
});
}

我可以把loadGLTF函数从雨中去掉,但我怎么能再次使用该函数来加载我的第二个模型呢/型号/雪地.gltf

这个声纳错误不是很友好。。。它真正的意思是,你定义的函数是在其他地方定义的另一个函数的精确副本(第159行(。

冗余回调通常就是这种情况。

很难在这里建议最好的重构,因为我们只包含代码的一小部分。我的猜测是,对Loader.load的回调是正在重复的函数。如果是这种情况,只需将其创建为一个函数并重用即可

问题也可能是loadGLTF函数。首先,您在另一个函数中定义它,这意味着它将始终是";"重建";当调用CCD_ 3时。

最好是把它定义在雨水之外,然后称之为雨水内部。

更进一步,您可以重构它,使其适用于您想要加载的任何网格:

// Define Loader outside of function, keep only one and reuse it.
const Loader = new GLTFLoader();
function loadGLTF(path) {
Loader.load(path, (gltf) => {
Mesh = gltf.scene;
Mesh.scale.set(0.2, 0.2, 0.2);
scene.add(Mesh);
camera.target = Mesh;
Mesh.position.x = 0;
Mesh.position.y = -0.4;
Mesh.position.z = 0;
});
}

如果位置和比例不总是相同,可以通过传递第二个参数来定义位置和比例。

最新更新