diff --git a/apps/ai-game-creator-shell/src/components/game-distribution/useGameDistributionPublishForm.ts b/apps/ai-game-creator-shell/src/components/game-distribution/useGameDistributionPublishForm.ts index 3584d74f1..d419eed5e 100644 --- a/apps/ai-game-creator-shell/src/components/game-distribution/useGameDistributionPublishForm.ts +++ b/apps/ai-game-creator-shell/src/components/game-distribution/useGameDistributionPublishForm.ts @@ -428,10 +428,14 @@ export function useGameDistributionPublishForm({ function createPanelScreenshotEntry(file: File): PanelScreenshotEntry { const fileError = resolvePanelImageFileError(file, 'screenshot'); + const previewUrl = buildPanelImagePreviewUrl(file); + // 与封面走同一条登记:不登记的话 `removeScreenshot` 的 revoke 分支永远命中不了, + // 卸载清理也遍历不到这些地址,截图预览会一直泄漏到页面关闭。 + if (previewUrl) objectUrlsRef.current.add(previewUrl); return { id: createPanelScreenshotId(), name: file.name.trim() || '游戏截图', - previewUrl: buildPanelImagePreviewUrl(file), + previewUrl, assetObjectId: null, status: fileError ? 'failed' : 'uploading', error: fileError || null,