diff --git a/src/core/scene/scene-process/service/camera.ts b/src/core/scene/scene-process/service/camera.ts index 87d27f323..502a3dd77 100644 --- a/src/core/scene/scene-process/service/camera.ts +++ b/src/core/scene/scene-process/service/camera.ts @@ -355,7 +355,7 @@ export class CameraService extends BaseService implements ICamera * 新增的 Camera 组件也需要 detach,与原始编辑器 ScenePreview.onComponentAdded 一致 */ detachNewSceneCamera(comp: any): void { - if (!comp || !(comp instanceof Camera) || !comp.camera) return; + if (!comp || !(comp instanceof Camera)) return; const editorMask = Layers.makeMaskInclude([ Layers.Enum.GIZMOS, Layers.Enum.SCENE_GIZMO, diff --git a/src/core/scene/scene-process/service/component/utils.ts b/src/core/scene/scene-process/service/component/utils.ts index 347bf3333..a29ee0b37 100644 --- a/src/core/scene/scene-process/service/component/utils.ts +++ b/src/core/scene/scene-process/service/component/utils.ts @@ -190,10 +190,17 @@ class ComponentUtils { }, Camera(component: Camera, node: Node) { - component.visibility = Layers.makeMaskInclude([Layers.Enum.UI_3D, Layers.Enum.UI_2D]); - component.projection = Camera.ProjectionType.ORTHO; - component.near = 0; - component.clearFlags = Camera.ClearFlag.DEPTH_ONLY; + const { Service } = require('../core/decorator'); + if (Service.Camera?.is2D) { + component.visibility = Layers.makeMaskInclude([Layers.Enum.UI_3D, Layers.Enum.UI_2D]); + component.projection = Camera.ProjectionType.ORTHO; + component.near = 0; + component.clearFlags = Camera.ClearFlag.DEPTH_ONLY; + } else { + component.visibility = Layers.Enum.DEFAULT; + component.projection = Camera.ProjectionType.PERSPECTIVE; + component.clearFlags = Camera.ClearFlag.SKYBOX; + } }, };