Skip to content

1.6.3

Choose a tag to compare

@github-actions github-actions released this 05 Jul 13:43
· 42 commits to master since this release

Build Date: 2026-07-05

🚀 Features

  • 24K layout: New 24-key layout (8+8+8) — three full rows of 8 keys each at 50px, all 54px apart. Foot keys use indices 24-39, allowing up to 16K foot key selection. Ghost key bindings and third-row rain settings fully supported. Layout tuned with frontY=375, KPS/Total at y=221, 6px gap between rows and KPS (matching 16K standard).
  • Standard Key Width mode: Toggle StandardKeyWidth that converts mixed-width back rows (12K key 8/10 from 77→50px, 10K 129→50px, 20K third row 77→50px) with widened KPS/Total filling the ends — matching KorenResourcePack's uniform layout style.
  • Ghost rain independent height/speed/width: New GhostRainHeightRow1/2/3, GhostRainSpeedRow1/2/3, GhostRainWidthRow1/2/3 sliders under the ghost rain section.

🐛 Bug Fixes

  • 12K/10K grid rain position: Back row keys with non-standard widths (12K key 8/10=77px, 10K key 8/9=129px) now share the front row's RainLine (key 9→2, 8→3, 10→4, 11→5 for 12K; 8→3, 9→4 for 10K). Rain drops align with the front column instead of centering within wide keys.
  • Rain render order with shared containers: Back row drops hidden behind front row drops in shared containers. Fixed by SetSiblingIndex((row-1)*2 + isGhost) — front=0, middle=2, third=4, ghost=base+1.
  • 14K layout jump: Switching from 16K to 14K dropped the overlay by 21px. All 14K Y values normalized to 16K (frontY 299→320, backY 245→266, KPS 199→220).
  • 8K layout too high with DownLocation: 8K repositioned as "16K minus second row" — frontY=266 (16K's back row position), KPS/Total y=220 (16K KPS position). DownLocation now aligns KPS at y=20 matching 16K.
  • 20K third row ghost key UI reversed: Ghost key buttons showed 16,17,18,19 but visual layout is 17,16,18,19. Now uses BackSequence20[8..12].
  • Custom position foldout conflated with toggle: Foldout was acting as on/off switch. Now separate expand state CustomPositionExpanded + internal enable toggle.
  • DrawMainKeyRows third row loop guard: i < keyCodes.Length was checking loop index instead of backSequence[i]. Corrected guard.
  • 24K third row rain not showing: IsRainEnabledForKey capped at index 20, blocking indices 20-23. Changed to keyIndex < FootKeyBase.
  • 24K KPS/Total overlapping third row: KPS/Total at y=165 overlapped with third row (y=232). Raised to y=221 with 6px gap.
  • 24K layout switching stale keys: Switching out of 24K left Keys[20-23] with stale 24K main key objects. Fixed ChangeKeyViewer() to also call ResetFootKeyViewer().
  • 24K foot key limit removed: MaxKeySlots=40 allows 14K/16K foot keys in 24K mode (indices 24-39).
  • Crash on settings load: InitPerKeyColors called FootKeyBase before Settings was assigned, causing NullReferenceException. Replaced with MaxKeySlots constant.

🧹 Refactor

  • Rain container sharing: ApplyRainContainerSharing() / ShareRainContainer() redirects back-row key.rain to front row's RainLine. UpdateRainContainerPositions uses HashSet<RectTransform> dedup.
  • Dynamic foot key base: FootKeyBase property replaces hardcoded 20 throughout the codebase (24 for 24K, 20 otherwise).
  • MaxKeySlots=40: All key arrays (Keys, Count, keyPressTimes, lastPerKeyKps) use MaxKeySlots. Per-key color arrays use MaxKeySlots + 2. KeyIndex returns Keys.Length/+1 for KPS/Total. All hardcoded 36/37/38/20 boundaries removed.
  • HasThirdRow property: Replaces style == Key20 checks in 18 locations across rain settings, shadow/outline, and ghost rain sections. Covers both 20K and 24K.

🚀 新功能

  • 24K 布局:新增 24 键布局(8+8+8),三排完整的 50px 等距排列。脚键索引扩展至 24-39,24K 下最多可选 16K 脚键。完整支持鬼键绑定、第三排雨滴/鬼雨设置。布局参数 frontY=375、KPS/Total 在 y=221,行间间隙 6px(与 16K 一致)
  • 标准按键宽度模式:开关 StandardKeyWidth 将宽窄混排的后排统为 50px(12K 宽键 77→50、10K 129→50、20K 第三排 77→50),KPS/Total 拉宽填平两端
  • 鬼雨独立高度/速度/宽度:新增 GhostRainHeightRow1/2/3GhostRainSpeedRow1/2/3GhostRainWidthRow1/2/3 滑条,鬼雨参数完全独立于普通雨

🐛 Bug 修复

  • 12K/10K 雨滴位置:非标准宽度后排键(12K key8/10=77px, 10K key8/9=129px)共享前排 RainLine 容器(12K: 9→2,8→3,10→4,11→5;10K: 8→3,9→4),雨滴与前列对齐
  • 雨滴渲染顺序:共享容器内后排雨滴被前排遮挡。SetSiblingIndex((row-1)*2 + isGhost) 固定渲染层级:前排=0、中排=2、第三排=4
  • 14K 布局跳变:16K 切 14K 时整体下沉 21px。14K 全部 Y 值归一到 16K(frontY 299→320, 后排 245→266, KPS 199→220)
  • 8K 开启放下面后偏高:8K 重新定位为"16K 去掉第二排"——frontY=266(16K 第二排行)、KPS/Total y=220(16K KPS 位置),放下面后 KPS 也在 y=20 与 16K 对齐
  • 20K 第三排鬼键 UI 顺序反了:按钮显示 16,17,18,19,但实际键位 17,16,18,19。改用 BackSequence20[8..12]
  • 自定义位置折叠误当开关:折叠按钮同时控制开关,无法展开查看滑条而保持功能开启。拆为独立折叠状态 + 内部勾选框
  • DrawMainKeyRows 第三排越界判断:循环条件 i < keyCodes.Length 检查的是循环下标而非 backSequence[i]
  • 24K 第三排雨滴不触发IsRainEnabledForKey 上限为 index 20,阻断 20-23。改为 keyIndex < FootKeyBase
  • 24K KPS/Total 与第三排重叠:KPS 在 y=165 与第三排(y=232)重叠。上调至 y=221,间距 6px
  • 24K 切出后残留旧对象:切换回非 24K 布局时 Keys[20-23] 残留旧 24K 主键对象。ChangeKeyViewer() 同时调用 ResetFootKeyViewer() 重建脚键
  • 24K 脚键限制解除MaxKeySlots=40 允许 24K 选择 14K/16K 脚键(索引 24-39)
  • 设置加载崩溃InitPerKeyColorsSettings 未赋值时调用 FootKeyBase 导致 NullReferenceException。改用 MaxKeySlots 常量

🧹 重构

  • 雨滴容器共享ApplyRainContainerSharing() / ShareRainContainer() 将后排 key.rain 重指向前排容器。UpdateRainContainerPositionsHashSet<RectTransform> 去重
  • 动态脚键基线FootKeyBase 属性替代全库硬编码 20(24K 为 24,其余 20)。17 处脚键索引同步更新
  • MaxKeySlots=40:所有键位数组(KeysCountkeyPressTimeslastPerKeyKps)使用 MaxKeySlots。每键颜色数组使用 MaxKeySlots + 2KeyIndex 返回 Keys.Length/+1 代表 KPS/Total。移除全库硬编码 36/37/38/20
  • HasThirdRow 属性:替代 18 处 style == Key20 判断,覆盖 20K 和 24K

Full Changelog: v1.6.2...1.6.3