1.6.3
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
StandardKeyWidththat 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/3sliders 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.Lengthwas checking loop index instead ofbackSequence[i]. Corrected guard. - 24K third row rain not showing:
IsRainEnabledForKeycapped at index 20, blocking indices 20-23. Changed tokeyIndex < 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 callResetFootKeyViewer(). - 24K foot key limit removed: MaxKeySlots=40 allows 14K/16K foot keys in 24K mode (indices 24-39).
- Crash on settings load:
InitPerKeyColorscalledFootKeyBasebeforeSettingswas assigned, causing NullReferenceException. Replaced withMaxKeySlotsconstant.
🧹 Refactor
- Rain container sharing:
ApplyRainContainerSharing()/ShareRainContainer()redirects back-rowkey.rainto front row's RainLine.UpdateRainContainerPositionsusesHashSet<RectTransform>dedup. - Dynamic foot key base:
FootKeyBaseproperty replaces hardcoded 20 throughout the codebase (24 for 24K, 20 otherwise). - MaxKeySlots=40: All key arrays (
Keys,Count,keyPressTimes,lastPerKeyKps) useMaxKeySlots. Per-key color arrays useMaxKeySlots + 2.KeyIndexreturnsKeys.Length/+1for KPS/Total. All hardcoded 36/37/38/20 boundaries removed. - HasThirdRow property: Replaces
style == Key20checks 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/3、GhostRainSpeedRow1/2/3、GhostRainWidthRow1/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) - 设置加载崩溃:
InitPerKeyColors在Settings未赋值时调用FootKeyBase导致 NullReferenceException。改用MaxKeySlots常量
🧹 重构
- 雨滴容器共享:
ApplyRainContainerSharing()/ShareRainContainer()将后排key.rain重指向前排容器。UpdateRainContainerPositions用HashSet<RectTransform>去重 - 动态脚键基线:
FootKeyBase属性替代全库硬编码 20(24K 为 24,其余 20)。17 处脚键索引同步更新 - MaxKeySlots=40:所有键位数组(
Keys、Count、keyPressTimes、lastPerKeyKps)使用MaxKeySlots。每键颜色数组使用MaxKeySlots + 2。KeyIndex返回Keys.Length/+1代表 KPS/Total。移除全库硬编码 36/37/38/20 - HasThirdRow 属性:替代 18 处
style == Key20判断,覆盖 20K 和 24K
Full Changelog: v1.6.2...1.6.3