From 5f1c69f5325c17de900360c6ca1035e4087af684 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Mon, 17 Aug 2026 14:36:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=9C=80=E7=BB=88=E9=A2=84?= =?UTF-8?q?=E8=A7=88=E6=A1=86=E7=BA=BF=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 最终预览新增 Show frame 开关并显示框线与拖拽控件 编辑叠加模式仅显示参考图与节点编辑框,不渲染组件内容 --- .../components/preview/PreviewWorkspace.tsx | 12 ++++++++ .../components/preview/UiTreeRenderer.tsx | 28 +++++++++++-------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/apps/ai-game-creator-shell/src/view/ui-editor/components/preview/PreviewWorkspace.tsx b/apps/ai-game-creator-shell/src/view/ui-editor/components/preview/PreviewWorkspace.tsx index 5425f495e..b721b1d55 100644 --- a/apps/ai-game-creator-shell/src/view/ui-editor/components/preview/PreviewWorkspace.tsx +++ b/apps/ai-game-creator-shell/src/view/ui-editor/components/preview/PreviewWorkspace.tsx @@ -42,6 +42,7 @@ export function PreviewWorkspace({ const [spaceHeld, setSpaceHeld] = useState(false); const [renderMode, setRenderMode] = useState('editor-overlay'); + const [showFrame, setShowFrame] = useState(false); const tree = controller.treeForActiveImage ?? null; const logicalSize = useMemo(() => { if (!activeImage) return null; @@ -252,6 +253,16 @@ export function PreviewWorkspace({ 最终预览 + {renderMode === 'final-preview' ? ( + + ) : null} {Object.keys(controller.images).length} 张界面图 ·{' '} {Object.keys(controller.sprites).length} 项素材 @@ -300,6 +311,7 @@ export function PreviewWorkspace({ void; @@ -56,6 +57,7 @@ function RenderNode({ node, isRoot, renderMode, + showFrame, selectedNodeId, resources, onSelectNode, @@ -76,13 +78,14 @@ function RenderNode({ } const isEditorOverlay = renderMode === 'editor-overlay'; + const isFrameVisible = isEditorOverlay || showFrame; return (
- {isEditorOverlay && node.metadata.name ? ( + {isFrameVisible && node.metadata.name ? ( {node.metadata.name} ) : null} - {node.components.map((component, index) => ( - - ))} + {renderMode === 'final-preview' + ? node.components.map((component, index) => ( + + )) + : null} {node.children.map((child) => ( ))} - {isEditorOverlay && !isRoot && selectedNodeId === node.id + {isFrameVisible && !isRoot && selectedNodeId === node.id ? RESIZE_HANDLES.map((handle) => (