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) => (