+ {error} +
+ ) : charactersPage === null ? ( +正在建立资产索引…
+ ) : ( + <> +{outfit?.name ?? '尚未创建造型'}
+本次只提交模块划分与接口,页面实现进后续 PR。
-角色会在创建工作流确认后进入这里。
++ {error} +
+ ) + } + if (!character) return正在读取角色资产…
+ + const name = characterName(character) + const selectedOutfit = + character.outfits.find((outfit) => outfit.id === selectedOutfitId) ?? + character.outfits[0] ?? + null + + return ( +选择动作卡片查看完整帧序列。
++ 导出能力待 PR #97 合并并完成资产字段接线 +
+{outfit.description}
+ ) : null} ++ {outfit.actions.length} 个动作 +
+生成并保存动作后会显示在这里。
++ {selectedAction.fps} FPS · {selectedAction.frameCount} 帧 ·{' '} + {selectedAction.loop ? '循环播放' : '单次播放'} +
+动作模板后端未提供
++ {characterName(character)} / {outfit.name} / {selectedAction.name} +
++ {error} +
+ ) + } + if (!project) return正在读取项目…
+ + const constraints = [ + ['视角', CHARACTER_PERSPECTIVE[project.perspective]], + ['朝向', DIRECTIONAL_MOVEMENT[project.directionalMovement]], + ['尺寸', `${project.spriteSize.width} × ${project.spriteSize.height}`], + ['画风', project.gameStyle ?? '尚未设定'], + ] + return ( -本次只提交模块划分与接口,页面实现进后续 PR。
-本次只提交模块划分与接口,页面实现进后续 PR。
++ 项目隔离角色资产与生成规格;先选项目,再管理其资产。 +
++ {error} +
+ ) : projectsPage === null ? ( +正在读取项目…
+ ) : projectsPage.total === 0 ? ( +完成新建项目流程后,项目会显示在这里。
+更新于 {updatedAt}
++ 删除后无法恢复这条项目记录。请先确认项目下资产已经妥善处理。 +
+