|
本帖最后由 sevenstars 于 2021-12-17 02:27 编辑
我们知道,开发者可以在HUD上添加自己的UI,比如各种技能按钮,菜单按钮等。但据我观察,很多开发者的UI并不会在按下F1(即打开“隐藏HUD”)后隐藏。这给玩家的截图带来了不便。然而很遗憾的是,我们不能通过modAPI获取玩家是否打开了“隐藏HUD”。但现在只需在UI加几行json,绑定游戏自带变量,就能实现这个效果。
比如这里有一个按钮控件:
- "SetButton@common.button": {
- "anchor_from": "top_left",
- "anchor_to": "top_left",
- //剩下的省略
- }
复制代码
要想实现让这个按钮和它的子控件可以按F1就隐藏,可以改成这样:
- "SetButton@common.button": {
- "anchor_from": "top_left",
- "anchor_to": "top_left",
- //剩下的省略
- "bindings": [
- {
- "binding_name": "#hud_visible", //绑定游戏变量hud_visible,这个变量的值取决于“隐藏HUD”是否开启。
- "binding_name_override": "#visible", //绑定控件变量visible,这时你这个控件的visible就取决于hud_visible这个变量的值了
- "binding_type": "global" //绑定类型为全局绑定
- }
- ]
- }
复制代码
这样写完之后,内部流程就是,玩家开启或关闭HUD显示->hud_visible变化->visible变化->控件显示或隐藏。
当然,我的世界的HUD的透明度也是可以调的,如果想让mod的UI透明度跟随HUD透明度,可以再绑定两个变量:
- "SetButton@common.button": {
- "anchor_from": "top_left",
- "anchor_to": "top_left",
- //剩下的省略
- "bindings": [
- {
- "binding_name": "#hud_visible",
- "binding_name_override": "#visible",
- "binding_type": "global"
- },
- {
- "binding_name": "#hud_alpha",
- "binding_name_override": "#alpha",
- "binding_type": "global"
- },
- {
- "binding_name": "#hud_propagate_alpha",
- "binding_name_override": "#propagateAlpha",
- "binding_type": "global"
- }
- ]
- }
复制代码
这样,此按钮控件的alpha和propagateAlpha就和游戏的hud_alpha以及hud_propagate_alpha绑定了。这样就实现了某个控件与它的子控件的透明度跟随HUD透明度。
除了这三个之外,还有很多游戏变量可以绑定,我这里列举一下:
paper_doll_visible:是否开启了显示纸娃娃
is_not_creative_mode:是否不在创造模式
is_creative_mode:是否在创造模式
exp_progress:玩家的经验值进度(推荐绑定到控件的clip_ratio上)
level_number:玩家的经验等级(请绑定到控件的text上)
level_number_visible:玩家的经验等级是否显示
is_armor_visible:玩家是否穿着盔甲
player_position_text:玩家的坐标(和打开显示坐标后的值一样,请绑定到控件的text上)
player_position_visible:玩家是否打开显示坐标
is_riding:玩家是否在骑乘
is_not_riding:玩家是否没在骑乘 |
|