# 游戏 UI / 预设 / 编辑器文本审计 日期:`2026-04-01` ## 范围 - 扫描范围:`src/components/`、`src/editor/`、`src/routing/`、`src/hooks/`、`src/services/`、`src/data/` - 聚焦对象: - 游戏内实际可见 UI 文本 - 预设编辑器与自定义世界编辑器中的可见文本 - 会直接透出到游戏 UI / 编辑器 UI 的预设原始值 - 未覆盖: - 图片资源内嵌文字的 OCR - `docs/` 历史文档本身 - 单纯内部实现用的 import path、className、asset path、纯 id 常量 ## 方法 - 先做一轮源码级 AST 扫描,抽取 JSX 可见文本、按钮文案、占位文案、标签文案和常见说明文案。 - 再做一轮“反向解码”复核: - `瑙掕壊 -> 角色` - `鍦烘櫙 -> 场景` - `姝︿緺 -> 武侠` - `鏈煡 AI 閿欒 -> 未知 AI 错误` - 结论只保留当前源码里仍然存在的问题,不直接沿用旧审计文档。 ## 结论摘要 - 当前仍然有 3 类问题: 1. 真实乱码:主要在 `appRoutes.tsx`、`AdventurePanel.tsx`、`CharacterDetailModal.tsx`、`useStoryGeneration.ts`、`preset-editor/shared.ts` 和 4 个拆分后的预设面板文件中。 2. 游戏 / 编辑器英文残留:主要在 `AdventurePanelOverlays.tsx`、`AdventureEntityModal.tsx`、`PreGameSelectionFlow.tsx`、`NpcVisualEditor.tsx`、`ItemCatalogEditor.tsx`、`StateFunctionEditor.tsx`、自定义世界编辑器几处。 3. 预设原始值直接透出:主要在 `characterPresets.ts`、`itemDesign.ts`、`monsterPresets.ts`、`buildTags.ts`、`scenePresets.ts`、`stateFunctions.ts`。 - 编辑器侧当前最明显的重灾区不是旧的 `PresetEditorPanels.tsx` 大文件,而是已经拆分出的: - `src/components/preset-editor/shared.ts` - `src/components/preset-editor/CharacterPresetPanel.tsx` - `src/components/preset-editor/SceneNpcPresetPanel.tsx` - `src/components/preset-editor/ScenePresetPanel.tsx` - `src/components/preset-editor/MonsterPresetPanel.tsx` - 游戏主流程里影响最直观的点: - 路由加载页文本乱码 - 冒险面板里的任务状态 / 对话状态 / NPC 交互短描述乱码 - AI 错误兜底文案乱码 ## 一、游戏 UI:已确认乱码 | 文件 | 行号 | 当前文本 / 范围 | 说明 | | --- | --- | --- | --- | | `src/routing/appRoutes.tsx` | `103-115` | `LOADING EDITOR`、`LOADING GAME`;`姝e湪杞藉叆缂栬緫鍣?..`;`姝e湪杞藉叆鍐掗櫓...` | 路由级加载屏文案。后两段是真乱码;结合反向解码可确定原意分别接近“正在载入编辑器...”和“正在载入冒险...”。 | | `src/components/AdventurePanel.tsx` | `99`、`101`、`103`、`109`、`111`、`113` | `查看库存与价�?`、`聊聊并试探口�?`、`看看能得到什么帮�?`、`离开并继续探�?`、`战斗决胜�?`、`切磋几招看身�?` | NPC 交互短描述里有多处截断 / 乱码。 | | `src/components/AdventurePanel.tsx` | `200`、`203` | `可作为制作材�?`、`任务奖励物品,可用于后续路线、交易或构筑规划�?` | 任务奖励物品说明文本被截断。 | | `src/components/AdventurePanel.tsx` | `569-571` | `已完�?`、`已交�?`、`进行�?` | 任务状态标签乱码。 | | `src/components/AdventurePanel.tsx` | `771` | `�?` | 对话气泡里的屏幕阅读器标签损坏。 | | `src/components/AdventurePanel.tsx` | `833`、`837`、`870` | `剧情推演�?..`、`对话进行�?`、`剧情推理完成,继续后显示新的冒险选项�?` | 加载态 / 流式对话态 / 继续冒险提示都有截断。 | | `src/components/CharacterDetailModal.tsx` | `35-36`、`223` | `女�?`、`男�?`、`属�?` | 性别标签与“属性”标题乱码。 | | `src/hooks/useStoryGeneration.ts` | `1214`、`1266`、`1409`、`1549`、`1978`、`2325` | `鏈煡 AI 閿欒` | 游戏故事流里 AI 失败时的统一兜底提示乱码;可反解为“未知 AI 错误”。 | ## 二、游戏 UI:英文残留 ### 1. 冒险面板和奖励弹层 - `src/components/adventure-panel/AdventurePanelOverlays.tsx` - `554-570`:`Adventure stats`、`Current area:`、`ADVENTURE SUMMARY`、`enemies defeated`、`items in inventory`、`scene transitions so far` - `622-668`:`Quest log`、`Total quests:`、`No active quests yet.` - `711-798`:`QUEST BRIEF`、`Claim reward`、`QUEST COMPLETE`、`Reward ready`、`Reward pickup is now available in the quest log.`、`Open quest log` - `887-1016`:`Battle reward`、`Defeated enemies:`、`BATTLE END`、`LOOT CACHE`、`Tap an item icon to inspect its details.`、`No usable loot dropped this time.`、`No loot dropped this time.`、`Rarity:`、`Quantity:`、`Slot:`、`Not equippable`、`Usable directly`、`Passive / non-immediate item`、`Effect preview: HP +`、`MP +`、`Cooldown -`、`Tags:`、`none` - `src/components/AdventurePanel.tsx` - `359-388`:`REWARD CACHE`、`Tap an item icon to inspect its details.`、`Affinity`、`Currency`、`No item bounty attached to this quest.` - `636-638`:`Current area` - `803`、`824`:两个按钮都显示 `Refresh` ### 2. 实体详情、同伴、交易 - `src/components/AdventureEntityModal.tsx` - `892`、`898`:`HP`、`MP` - `1073`:`NPC 信息` - `1111`:`敌对NPC`、`NPC` - `1163`:数量前缀 `x{item.quantity}` - `1165`:`Inspect` - `1428`:`NPC 背包` - `src/components/CompanionCampModal.tsx` - `177-178`、`233-234`:`HP`、`MP` - `255`:`NPC` - `src/components/NpcModals.tsx` - `252`、`273`、`356`:`NPC 商品列表`、`这个 NPC 当前没有可售商品。`、`NPC 商品` - `408`:`效果预览:HP +... / MP +... / 冷却 -...` - `src/components/CharacterDetailModal.tsx` - `112`:`数量 x{item.quantity}` ### 3. 开场流程与加载态 - `src/components/game-shell/PreGameSelectionFlow.tsx` - `48-49`:`QQ Group`、`WeChat` - `81`、`89`:`核心NPC` - `471-473`:`Wuxia Base` - `519-527`:`Custom`、`Create Custom World`、`Enter a world setup and let the system generate playable characters, NPCs, items, and landmarks.` - `src/components/game-shell/CharacterSelectionFlow.tsx` - `401`:`Character Details` - `406`:`Current Character` - `src/components/GameCanvas.tsx` - `32`:`Loading scene` - `src/components/GameShell.tsx` - `859`:`正在加载 NPC 交互...` ### 4. 运行时文案源头 - `src/data/sceneObservation.ts` - `9-36` 整段观察结果仍是英文: - `You pause to listen...` - `Possible NPCs: ...` - `Possible hostile NPCs: ...` - `Possible treasure clues: ...` - `Boss clue: ...` - `src/hooks/useStoryGeneration.ts` - `216`、`219`:最近战斗 / 最近协作提示仍是英文 - `639-646`:营地聊天结果文本混用了英文句子 - `662-667`:预览对话选项里仍有 `Speak with ...` 与 `Focus on the person in front of you first...` ## 三、编辑器 UI:已确认乱码 ### 1. 共享标签与世界名 - `src/components/preset-editor/shared.ts` - `42`:`瑙掕壊`,可反解为 `角色` - `44`:`鍦烘櫙`,可反解为 `场景` - `45`:`鏁屽 NPC`,可反解为 `敌对 NPC` - `46`:`鐗╁搧`,可反解为 `物品` - `47`:`鍔熻兘`,可反解为 `功能` - `53`:`姝︿緺`,可反解为 `武侠` - `54`:`浠欎緺`,可反解为 `仙侠` - `55`:`鑷畾涔変笘鐣?`,基本可判定原意是“自定义世界”,但当前字符串已经不完整 ### 2. 角色预设面板 - `src/components/preset-editor/CharacterPresetPanel.tsx` - `79`:空状态 / 顶部说明整段乱码 - `372-373`:装备区标题乱码 - `395-397`:背包区标题乱码 - `446-447`:技能预览相关标签乱码 - `475-477`:技能区提示乱码 - `590-592`:底部说明大段乱码 ### 3. 场景 NPC 预设面板 - `src/components/preset-editor/SceneNpcPresetPanel.tsx` - `87`:空状态整段乱码 - `267`:技能预览空态说明乱码 - `346`:角色 ID 标签乱码 - `352`:怪物预设 ID 标签乱码 - `389`:视觉编辑器说明整段乱码 ### 4. 场景预设面板 - `src/components/preset-editor/ScenePresetPanel.tsx` - `52`:空状态整段乱码 - `220-221`:敌对 NPC 分区标题乱码 - `254-255`:场景 ID 标签乱码 - `298-299`:怪物 ID 列表标签乱码 - `316-317`:关联 NPC 分区标题乱码 ### 5. 怪物预设面板 - `src/components/preset-editor/MonsterPresetPanel.tsx` - `53`:顶部说明整段乱码 ## 四、编辑器 UI:英文残留 ### 1. 预设编辑器主面板 - `src/components/preset-editor/CharacterPresetPanel.tsx` - `278-279`:`Character List`、`Choose a player character, preview it live, and edit the preset fields.` - `325`:`Save Character Overrides` - 多处通用占位仍是 `Section`、`Editor section.`、`Field` - `347`:`Inventory World` - `468-484`:`Skill Loadout`、`Add Skill` - `510`:`Skill ID` - `651`:`Character ID` - `682`:`Asset Variant` - `698`:`Personality` - `713`:`Attributes`、`Adjust the four core character attributes.` - `772`:`Unset` - `798`:`scene-id-1 / scene-id-2` - `src/components/preset-editor/SceneNpcPresetPanel.tsx` - `181-182`:`NPC Library`、`Browse and select an NPC preset.` - `186`:`NPC ID` - `223`:`Save NPC Overrides` - `230-246`:`Skill Preview`、`Preview ranged skills from the linked character.`、`Skill`、`World` - `275-276`:`Hostile NPCs use monster presets...`、`Narrative NPCs can preview linked visuals...` - `318-382`:`NPC Details`、`Role`、`Avatar`、`Initial Affinity`、`Description`、`Visual Editor` - `src/components/preset-editor/ScenePresetPanel.tsx` - `145`:`Scene` - `172`:`Save` - `179-193`:`Scene Preview`、`Preview Mode`、`Monster Preview`、`NPC Preview`、`Treasure Preview`、`Empty` - `223`、`230`、`233`、`242`:`None`、`NPC` - `248-272`:`Scene Details`、`World`、`Name`、`Description` - `288`:`Unset` - `src/components/preset-editor/MonsterPresetPanel.tsx` - `172`:`Save Monster Overrides` - `179-180`:`Monster Override Preview`、`Editor section.` - `213-222`:`Attack Range:`、`Speed:`、`HP:`、`Max HP:` - `236`:`Monster ID` - `242`:`Name` - `258`:`Intro Action` - `373`:`FPS` ### 2. 其他编辑器 / 自定义世界 - `src/components/ItemCatalogEditor.tsx` - `654`:`HP`、`MP`、`CD` - `677`、`806`:`ID` - `789`:`Build Buff` - `458`、`863`:`public/Icons`、`itemOverrides.json` - `src/components/NpcVisualEditor.tsx` - `463`、`702`、`708`、`718`:`NPC` - `977`:`Shift` - `1028-1052`:`Current loadout:`、`Unknown headgear`、`No headgear`、`Unknown main hand`、`No main hand`、`Unknown off hand`、`No off hand` - `src/components/CustomWorldEntityCatalog.tsx` - `139`、`268`、`276`、`349`:`NPC` - `224`:`WORLD DOSSIER` - `346`:`MedievalFantasyCharacters` - `src/components/CustomWorldEntityEditorModal.tsx` - `242`:`URL` - `460`:`MedievalFantasyCharacters` - `478-479`、`730`、`758-759`:`AI`、`AI生成NPC形象`、`AI生成场景` - `631-653`:`NPC` - `src/components/PresetEditor.tsx` - `71`:介绍文案里仍然直接显示 `NPC` - `src/components/StateFunctionEditor.tsx` - `803`:`Failed to play preview` - `818-821`:`HP`、`No visible target` - `915`:`n/a` - `1060-1064`:`Failed to save option behavior overrides`、`Option behavior overrides saved.` - `1106`:直接显示原始 `state` - `1185`:直接把 `AnimationState` 值作为 label - `1191`:敌对 NPC 反应动画里仍直接显示 `idle` / `move` / `attack` - `1217`:技能风格仍直接依赖 `steady` / `burst` / `mobility` / `finisher` / `projectile` ## 五、预设 / 数据层:会直接透出 UI 的英文原始值 这一部分不是“源码内部英文就算问题”,而是“当前编辑器或预览没有做显示映射,导致原始英文值直接露给用户”。 ### 1. 角色预设 - `src/data/characterPresets.ts` - 动作文件夹 / 前缀仍是英文: - `363-379` - `520-536` - `739-755` - `834-850` - `1019-1038` - 对话风格原始值仍是英文: - `384-386`:`blunt` / `dry` / `direct` - `541-543`:`wary` / `dry` / `fragmented` - `760-762`:`blunt` / `teasing` / `deflecting` - `855-857`:`blunt` / `steady` / `direct` - `1043-1045`:`measured` / `steady` / `fragmented` - 技能风格 / 投射方式仍是英文: - `407-408`、`445`、`473-474` - `572-573`、`604-605`、`636-637`、`668-669`、`700-701` - `791-792`、`815-818` - `886`、`906`、`926-927`、`958-959`、`990-991` - `1066-1077`、`1109-1110`、`1133-1146`、`1178-1179` - 这些值当前会在角色预设编辑器、技能预览和部分行为预览里直接露出。 ### 2. 物品设计 / Build 标签 - `src/data/itemDesign.ts` - `56-201`:`worldAffinity` / `role` / `rarity` 原始值仍是英文,如 `neutral`、`wuxia`、`xianxia`、`fieldcraft`、`breaker`、`berserker`、`legendary` - `213-219`:`pieceName` 仍是 `boots`、`chest`、`gloves`、`helm`、`leggings`、`shield`、`weapon` - `820`:说明文本里仍混入 `build` - `src/data/buildTags.ts` - `11-291`:整套 build tag id 都是英文,如 `quickblade`、`combo`、`dash`、`ranged`、`burst`、`caster`、`vanguard`、`paladin`、`starter` - 这些值会进入物品编辑器、构筑标签和相关预览。 ### 3. 怪物与掉落 - `src/data/monsterPresets.ts` - `490-736`:掉落 id、稀有度、tag 原始值大量是英文,如 `rare`、`uncommon`、`armor`、`material`、`relic`、`healing` - `718-736`:有两条掉落本身是完整英文可见值: - `Consumable` / `Thorn Nectar` / `Sticky sap that can be refined into emergency recovery tonic.` - `Relic` / `Devour Bloom` / `A predatory blossom that stores concentrated life force.` ### 4. 场景 / 行为 / 锻造 / NPC 交互 - `src/data/scenePresets.ts` - `349-651`:场景 id 全部是英文连字符格式,如 `wuxia-bamboo-road`、`xianxia-cloud-gate` - 当前在编辑器 ID 字段中会直接显示。 - `src/data/stateFunctions.ts` - `113-372`:`category` 原始值仍是 `battle` / `recovery` / `escape` / `idle` - 编辑器预览还会直接显示动画 / delivery 原始值。 - `src/data/forgeSystem.ts` - `264`:描述里混入 `build` - `274-281`:`relic`、`epic`、`setId`、`pieceName` 等原始值会进入物品编辑器链路 - `src/data/npcInteractions.ts` - `207-209`:兜底对话风格仍是 `measured` / `steady` / `fragmented` ## 六、建议修复顺序 1. 先修最影响主流程观感的真实乱码。 - `src/routing/appRoutes.tsx` - `src/components/AdventurePanel.tsx` - `src/components/CharacterDetailModal.tsx` - `src/hooks/useStoryGeneration.ts` 2. 再修预设编辑器的共享标签和 4 个拆分面板。 - `src/components/preset-editor/shared.ts` - `src/components/preset-editor/CharacterPresetPanel.tsx` - `src/components/preset-editor/SceneNpcPresetPanel.tsx` - `src/components/preset-editor/ScenePresetPanel.tsx` - `src/components/preset-editor/MonsterPresetPanel.tsx` 3. 再统一清理英文残留。 - 游戏端优先:`AdventurePanelOverlays.tsx`、`AdventureEntityModal.tsx`、`PreGameSelectionFlow.tsx` - 编辑器端优先:`ItemCatalogEditor.tsx`、`NpcVisualEditor.tsx`、`StateFunctionEditor.tsx`、自定义世界编辑器 4. 最后做“显示层映射”,避免预设原始英文继续漏到 UI。 - `characterPresets.ts` - `itemDesign.ts` - `buildTags.ts` - `monsterPresets.ts` - `scenePresets.ts` - `stateFunctions.ts` ## 七、备注 - 本次结论以当前源码为准,和旧审计文档相比,已有一部分旧问题已经被修掉。 - `src/components/preset-editor/PresetEditorPanels.tsx` 现在只是 re-export 壳文件,真正的问题已经分散到拆分后的 panel 文件里。 - `src/components/preset-editor/shared.ts` 里的几处乱码已经可以明确反解,适合优先直接修正。 - `src/data/` 中很多英文值本身可能是内部枚举,但只要当前编辑器 / 预览没有做中文映射,就仍应视为“会暴露到用户侧”的文本问题。