Javascript jabylon.js如何访问其外部的网格';s函数

Javascript jabylon.js如何访问其外部的网格';s函数,javascript,3d,babylonjs,Javascript,3d,Babylonjs,我就是无法进入巴比伦网。 每次我尝试运行代码时,我都会得到这样的结果 我尝试了两种不同的方法: 示例1: var carTest; BABYLON.SceneLoader.ImportMesh("", "assets/", "car.obj", scene, function(object) { carTest = object[0]; }); carTest.position.x = 10; var carTest = BABYLON.SceneLoader.Imp

我就是无法进入巴比伦网。 每次我尝试运行代码时,我都会得到这样的结果

我尝试了两种不同的方法:

示例1:

var carTest;
BABYLON.SceneLoader.ImportMesh("", "assets/", "car.obj", scene, function(object) {
        carTest = object[0];
    });
carTest.position.x = 10;
var carTest = BABYLON.SceneLoader.ImportMesh("", "assets/", "car.obj", scene);
carTest.position.x = 10;
示例2:

var carTest;
BABYLON.SceneLoader.ImportMesh("", "assets/", "car.obj", scene, function(object) {
        carTest = object[0];
    });
carTest.position.x = 10;
var carTest = BABYLON.SceneLoader.ImportMesh("", "assets/", "car.obj", scene);
carTest.position.x = 10;
在你的例子2中, BABYLON.SceneLoader.ImportMesh返回可为null的
,并且它们都没有属性名作为位置。
因此,卡特斯特位置将是未定义的

carTest.position.x = 10 => undefined.x = 10; 
将抛出错误

在你的第一个例子中, BABYLON.SceneLoader.ImportMesh是一个同步函数,尽管BABYLON.SceneLoader中还有另一个函数名ImportMeshAsync

我以前从未使用过巴比伦。
但根据,ImportMesh和ImportMeshAsync之间的区别基本上是返回的类型

所以

[改进]

移动
carTest.position.x=10

BABYLON
  .SceneLoader
  .ImportMesh("", "assets/", "car.obj", scene, function(object) {
        carTest = object[0];
        carTest.position.x = 10;
    });
在你的例子2中, BABYLON.SceneLoader.ImportMesh返回可为null的
,并且它们都没有属性名作为位置。
因此,卡特斯特位置将是未定义的

carTest.position.x = 10 => undefined.x = 10; 
将抛出错误

在你的第一个例子中, BABYLON.SceneLoader.ImportMesh是一个同步函数,尽管BABYLON.SceneLoader中还有另一个函数名ImportMeshAsync

我以前从未使用过巴比伦。
但根据,ImportMesh和ImportMeshAsync之间的区别基本上是返回的类型

所以

[改进]

移动
carTest.position.x=10

BABYLON
  .SceneLoader
  .ImportMesh("", "assets/", "car.obj", scene, function(object) {
        carTest = object[0];
        carTest.position.x = 10;
    });

调用SceneLoader时,仅当返回onlyne(函数)时才设置carTest对象,则该对象在下一行中未就绪(此时carTest不存在)


SceneLoader完成后,您需要等待使用CarteList对象。

调用SceneLoader时,仅在返回onlyne(函数)时设置CarteList对象,然后对象在下一行中未就绪(此时CarteList不存在)


当SceneLoader完成时,您需要等待使用carTest对象。

如果您知道async/await的概念,您可以使用async函数,而不是使用带有回调函数的synchron方法

例如:

const data = await SceneLoader.ImportMeshAsync("", "assets/", "car.obj", scene);
const carMeshes = data.meshes;

如果知道只有一个具有子对象,则可以访问[0],否则可能需要合并网格。取决于您要执行的操作。

如果您了解async/await的概念,可以使用async函数,而不是使用带有回调函数的synchron方法

例如:

const data = await SceneLoader.ImportMeshAsync("", "assets/", "car.obj", scene);
const carMeshes = data.meshes;

如果知道只有一个具有子对象,则可以访问[0],否则可能需要合并网格。取决于你想做什么。

这正是我想要避免的事情。
carTest.position.x=10必须在外面。你能解释一下你为什么想要
卡特斯特位置.x=10要在外面吗?您需要在巴比伦.SceneLoader.ImportMesh
之前运行它吗?汽车需要根据来自不同脚本的实时数据移动。日期以x和y坐标的形式出现。在最佳情况下,
carTest.position.x=10也必须在不同的脚本中。它不需要在bebylon.SceneLoader.ImportMesh
之前运行。这正是我想要避免的事情。
carTest.position.x=10必须在外面。你能解释一下你为什么想要
卡特斯特位置.x=10要在外面吗?您需要在巴比伦.SceneLoader.ImportMesh
之前运行它吗?汽车需要根据来自不同脚本的实时数据移动。日期以x和y坐标的形式出现。在最佳情况下,
carTest.position.x=10也必须在不同的脚本中。它不需要在bebylon.SceneLoader.ImportMesh
之前运行。您能提供一个示例吗?您能提供一个示例吗?