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