SuperAPI AI 工具集

tinyworld-settings

前端与建站

查看项目

更新于 10-30 12:08

技能介绍

Tiny World Settings 是 Tiny World Builder 项目中用于维护设置弹窗的技能说明。设置界面位于 tiny-world-builder.html 中的 #render-modal。

用途与原则

本技能适用于修改设置弹窗的标签页、面板、控件、渲染/世界/材质/人群/AI 等设置,或调整设置的无障碍支持。所有改动需与现有静态单文件应用保持兼容。

结构约束

需保留 data-settings-tab 的取值(app、rendering、world、materials、environment、crowd、ai),除非在同一次改动中同步更新所有命令面板与设置调用方。需保留现有控件 ID,因为设置初始化代码通过 getElementById 绑定控件;控件在区块间移动是安全的,但重命名 ID 不行。

selectSettingsTab(name) 必须对未知名称做防护,并同步更新所有标签与面板状态,包括 .active、aria-selected、标签 tabIndex、面板 .active 与 hidden。标签应为 role="tablist" 内真正的 role="tab" 按钮,支持点击及 Arrow/Home/End 键盘导航;面板应为 role="tabpanel",带稳定 ID 与指向对应标签的 aria-labelledby。

设置搜索是现有标签/面板接线的薄 UI 层:不得为搜索重命名控件,查询清空后隐藏行需可恢复,自动切换标签应通过 selectSettingsTab() 完成。搜索结果计数可显示在标签按钮内,但需同步保持其 data-settings-tab 值、role、键盘导航与无障碍标签。

分组与布局

设置按用户意图而非实现变量名分组,当前顶层标签为 Workspace、Rendering、World、Materials、Environment、Crowd 和 AI。标签应保持紧凑、可扫读:桌面可显示简短提示,移动端保持紧凑的横向标签条。

移动端/短屏滚动:.settings-card 有高度上限(max-height: calc(100vh - 100px),手机上用 dvh),面板内部滚动(.settings-panels { overflow-y: auto },布局 flex:1 1 auto; min-height:0)。不可让卡片无限增长,否则手机上会把下方控件挤出屏幕。手机布局为 grid-template-rows: auto minmax(0,1fr),面板行即滚动区。

当设置或面板需要按更宽泛的用户语言(如性能、机制、纹理、天气、模型)被发现时,添加 data-settings-keywords。搜索应将宽泛类别词路由到正确面板,而不隐藏该面板中的控件。

各标签内容说明

App/Workspace 拥有 UI 主题选择器(ui-theme-mode):Auto 跟随英国/BST 实时时间,Dark 强制深色界面,Light 强制浅色界面且不随时间自动变暗。

Rendering 按意图分组图像/渲染开销控件:Quality 包含阴影质量、Resolution、动态分辨率与目标 FPS;动态分辨率将 Resolution 滑块视为上限,仅改变瞬时的有效缩放。Lighting 包含光照与补光控件;Image effects 包含亮度、饱和度、对比度、像素化、着色器 AA 与移轴。

World 中预览/幽灵控件已刻意移除并强制为零;除非明确恢复预览渲染,否则不要重新引入距离/窗口/不透明度控件。地形样式包含体素斜角、景观/星球切换、体素/小屋与地形体素分辨率。体素间隙与 Show crowns 也已从界面移除并强制关闭,以保证渲染稳定性/性能。

时间与天气弹窗:一天中时段范围仅在 Build 模式下可编辑,用于本地光照预览;Play/Tinyverse/无编辑模式跟随英国/BST 实时时间并禁用该范围;不要将手动构建时段的覆盖持久化到 localStorage。

Environment 拥有 Planes 复选框(render-planes-enabled),因为它控制环境飞越与拖曳横幅;当前性能阶段默认关闭,并应可按 plane/crop-duster/banner 术语搜索。Environment 还拥有仅管理员的 Watcher 控件(watcher-*);Watcher 视觉源自 engine/world/assets/god-face_15.html,由 engine/world/69-watcher-layer.js 渲染,必须保持为瞬时的 Three 场景层而非保存的世界数据;保持其以世界为锚点并提供 X/Y/Z 控件,使其随岛屿缩放/平移,不要重新锁定到相机;保持深度测试开启,使远处的 Watcher 位于岛屿之后而非覆盖其上。

材质磨损默认 100%(materialWear: '1' 与发布的 tinyworld:render:materialWear = 1.00)。当修改发布版渲染默认值且需覆盖旧浏览器 localStorage 时,需同步提升 RENDER_SETTINGS_VERSION 并更新 tinyworld-defaults.json。

Materials、Environment、Crowd 和 AI 可独立改进,但需保持现有控件 ID 与监听接线完整。

验证

运行内联脚本语法检查、npm test 与 npm run build。在浏览器中检查设置可打开、每个标签可选中、仅一个面板可见、搜索路由到匹配区块并能干净清除、Arrow/Home/End 导航可用、命令面板式标签点击仍有效、控制台无应用错误。若改动响应式设置,还需检查桌面与移动宽度:无横向页面溢出、标签文字不溢出、搜索切换到预期面板、控制台无新警告/错误。