DEVLOG // #12 // 2026-09-18
UI 终端化完成
全部交互界面已改写为终端风格。至此,"玩家看到的每一个字都来自一台正在记录你的机器" 这条原则,从标题页一直贯通到设置页。
为什么要做这件事
最初的界面是 Ren'Py 默认模板改的:圆角按钮、居中排布、柔和阴影。功能上没问题, 但它传达的东西是错的 —— 它看起来像一个"游戏菜单",而《月蚀症》里玩家操作的 应该是一台档案终端。你在里面的每一次点击,都是向某个系统提交一次查询。
所以这一版把菜单项重做成了"账目行":实色底、左侧竖条、两位索引、等宽标签, 右上角一枚 REC 红点表示"终端正在等待这条指令"。所有元素由 Solid 直接绘制, 不依赖任何贴图 —— 这带来一个额外好处:任意分辨率下都不会糊。
这一轮踩到的坑
- 悬停动效"看起来没生效"。排查了很久才定位到:Ren'Py 在屏幕重算时会把 旧 transform 的 ATL 时钟锚点继承给新 transform,导致整段插值在第一帧就已经 "播到终点"。表现就是鼠标移上去,元素瞬间跳到终值,完全没有过渡。 最后改用函数驱动的 Transform 自己按挂钟插值,绕开了这套继承机制。
-
方括号开关没有选中态。设置页的开关是用
[ ]/[×]表示的,但两组方括号的宽度不一致,勾选后整行会轻微位移。改成固定宽度的等宽字符后解决。 - 序号与项名重叠。序号原本用 fixed 层叠定位,一旦项名换行就压在一起。 改成横排即可,不需要任何定位技巧 —— 早该这么做。
现在的状态
UI_TERMINAL [ OK ] 终端化完成 UI_MOTION [ OK ] 悬停/入场动效 UI_PREFS [ OK ] 设置页(含确认弹窗) UI_CRT [ OK ] 全局 CRT 层 UI_TRANSITION [ ?? ] 转场体系仍在调
接下来轮到转场。方向已经定了:不做花哨的推拉,而是模拟信号切换 —— 画面先短暂失同步,再重新锁定。
如果你打开设置页发现某一行对不齐,那不是彩蛋,是我的 bug。欢迎来骂。 —— 制作组