gohud

盖在屏幕之上

← 控件

GoDrawer —— 侧边抽屉

GoSheet 是从底部升上来的,这对竖着拿的手机是对的。可在平板或者桌面上, 同一张面板会把游戏盖住 —— 这时候换成从侧边推出来的抽屉。

bag.side = GoDrawer.Side.RIGHT
bag.open("背包")

面板一直铺到屏幕边缘,内容却留在安全区域里面,否则一个圆角就把第一行裁掉了。 LEFT 即使在阿拉伯语下也是指屏幕的左边;要是你要的是“开始的那一侧”, 请打开 follow_text_direction,它在 RTL 下会翻过来。

GoPopover —— 贴着控件的卡片

GoPopover.open(slot, item_card(item))

它就是 GoSurface 的贴靠摆放,只不过图层、外壳、锚点和拆除都已经接好了 —— 每个游戏都要反复写的那十行。同一时间只开着一张,因为卡片叠起来会把屏幕埋掉, 谁也分不清哪张卡片属于哪个格子。遮罩是透明的:你打开一张卡片本来是为了比较装备, 它就不该把装备压暗。

它不是悬停提示。 触摸屏没有悬停,所以只有鼠标才揭得开的东西, 对你一半的玩家来说是不存在的。

GoContextMenu —— 长按与右键

GoContextMenu.attach(item_slot, [
    {"text": "使用", "action": use},
    {"separator": true},
    {"text": "丢弃", "action": drop, "danger": true},
])

PopupMenu 引擎里本来就有。没有的是那个手势:按住半秒才打开, 手指一动就取消,这样滑动列表时绝不会弹出菜单。菜单项要看你按的是谁才定得下来时, 传一个 Callable,而不是数组。

长按需要第二个入口。 藏起来的手势没人发现得了 —— 请给它配上一颗看得见的 按钮(open_at())、一个图标,或者第一次进来时的一次引导。

GoConsole —— 开发者控制台

console.register("give", "发放一件物品:give <id> <count>", give)
console.toggle()

作弊和调试命令;命令面板会随着你输入即时筛选,谁也不用背下来,方向键上还留着历史记录。 它盖在所有东西之上,所以对话框开着也照样调试。

在正式版里它拒绝打开。 debug_only 默认是开着的; 作弊命令一旦落到玩家手里,一款游戏的经济系统第一天就完了。