是否有一种方法来检查正在使用的实例?
我正在将此记录到控制台:
import { OrthographicCamera } from 'three';
// Later in the file:
console.log(camera instanceof OrthographicCamera, camera);它输出false,但是当我将camera的值记录到控制台时,我得到如下结果:

我不知道为什么它显示的相机不是一个实例,那么是否有办法获得更多的信息,它究竟在看什么?
这里是创建照相机的地方:
export function Camera(options?: CameraOptions) {
return function (target: new () => object) {
return class GameCamera extends target {
readonly camera!: Camera;
constructor() {
super();
const dim = this.cameraDimensions();
// create the Three camera
this.camera = new OrthographicCamera(dim.left, dim.right, dim.top, dim.bottom, options?.near ?? 0, options?.far ?? 100);
}
}
}
}}摄像机在装饰器中创建并添加到gameObjects数组中。然后,当我得到activeCamera时,它是对上面扩展target的装饰器的引用。
这里是我进行instanceof查找的地方:
@Injectable({ providedIn: 'root' })
export class Camera {
get activeCamera() {
return Engine.activeCamera;
}
mouseToWorldPoint(mousePoint: Vector3) {
if (this.activeCamera) {
// Here is the check:
console.log(camera instanceof OrthographicCamera, camera);
}
}
}我就是这样得到相机的:
export class Engine {
static gameObjects: GameObject[] = [];
static get activeCamera() {
return this.gameObjects.find(i => i.gameObjectType === 'camera' && i.isActive === true) as GameCamera | undefined;
};
}我已经将这个项目分解成多个npm工作空间:
{
"name": "game-engine",
"version": "1.0.0",
"scripts": {
"start": "npm run start --workspace=test"
},
"workspaces": [
"test",
"packages/core",
"packages/common",
"packages/input",
"packages/objects"
]
}两个工作空间从三个模块中获取信息。
GameCamera是packages/objects模块的一部分(创建packages/objects Camera是packages/common模块的一部分(例如检查)。注意:这样工作了一段时间,似乎已经开始发生了。
发布于 2022-09-14 23:34:01
为了解决我的问题,我所做的是在packages/core包中添加了一个导出以导出三个
index.ts (@engine/core)
import * as Three from 'three';
export { Three };然后,当我需要在另一个包中使用三个just时,我只需要使用核心中的一个,如下所示:
@engine/objects/something.ts
import { Three } from '@engine/core';
export class CreateObject {
constructor(){
this.obj = new Three.Object3D();
}
}https://stackoverflow.com/questions/73692715
复制相似问题