各位如何在场景中获得主相机

自从官方取消了主相机的获得方式之后,但自己偏偏经常需要用到,所以就自己写了一个,但感觉不是很满意,看看论坛有没有大佬们可以提供一下你们的思路或者是做法。
我的写法:

declare module "cc" {
    namespace Camera {
        var mainCamera: Camera;
    }
}

let cameraComponent: Camera;
Object.defineProperty(Camera, "mainCamera", {
    configurable: true,
    get() {
        if (cameraComponent == null || !cameraComponent.isValid) {
            const cameras = director.root.mainWindow.cameras;
            for (const camera of cameras) {
                if (camera.node != null) {
                    const cameraTemp = camera.node.getComponent(Camera);
                    if (cameraTemp.node.name == "Main Camera")
                        cameraComponent = cameraTemp;
                    break;
                }
            }
            if (cameraComponent == null)
                cameraComponent = director.getScene()?.getChildByName("Main Camera")?.getComponent(Camera);
        }
        return cameraComponent;
    },
    set(v) {
        cameraComponent = v;
    }
});
// 使用方法示例
Camera.mainCamera.camera.initGeometryRenderer();
1赞

我在3.8版本看了一下,这个
const cameras = director.root.mainWindow.cameras;
获取到的相机就是编辑器里面节点树中的所有相机,并且节点的名字和编辑器节点树中的节点名是一致的,请问如何判断主相机是哪一个啊? :face_with_monocle: