查看: 2533|回复: 10
打印 上一主题 下一主题

[交流] [技术公布]在UI中绑定引擎变量,实现原生效果

[复制链接]

22

主题

317

回帖

174

积分

Lv.4 怪物猎人

UID
373726
小麦
3
金锭
608
下界之星
0

开发者认证勋章

跳转到指定楼层
楼主
发表于 2021-12-17 02:20:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 IP:上海
本帖最后由 sevenstars 于 2021-12-17 02:27 编辑

我们知道,开发者可以在HUD上添加自己的UI,比如各种技能按钮,菜单按钮等。但据我观察,很多开发者的UI并不会在按下F1(即打开“隐藏HUD”)后隐藏。这给玩家的截图带来了不便。然而很遗憾的是,我们不能通过modAPI获取玩家是否打开了“隐藏HUD”。但现在只需在UI加几行json,绑定游戏自带变量,就能实现这个效果。
比如这里有一个按钮控件:
  1. "SetButton@common.button": {
  2.     "anchor_from": "top_left",
  3.     "anchor_to": "top_left",
  4.     //剩下的省略
  5. }
复制代码

要想实现让这个按钮和它的子控件可以按F1就隐藏,可以改成这样:
  1. "SetButton@common.button": {
  2.     "anchor_from": "top_left",
  3.     "anchor_to": "top_left",
  4.     //剩下的省略
  5.     "bindings": [
  6.         {
  7.             "binding_name": "#hud_visible",    //绑定游戏变量hud_visible,这个变量的值取决于“隐藏HUD”是否开启。
  8.             "binding_name_override": "#visible",   //绑定控件变量visible,这时你这个控件的visible就取决于hud_visible这个变量的值了
  9.             "binding_type": "global"   //绑定类型为全局绑定
  10.         }
  11.     ]
  12. }
复制代码

这样写完之后,内部流程就是,玩家开启或关闭HUD显示->hud_visible变化->visible变化->控件显示或隐藏。
当然,我的世界的HUD的透明度也是可以调的,如果想让mod的UI透明度跟随HUD透明度,可以再绑定两个变量:
  1. "SetButton@common.button": {
  2.     "anchor_from": "top_left",
  3.     "anchor_to": "top_left",
  4.     //剩下的省略
  5.     "bindings": [
  6.         {
  7.             "binding_name": "#hud_visible",
  8.             "binding_name_override": "#visible",
  9.             "binding_type": "global"
  10.         },
  11.         {
  12.              "binding_name": "#hud_alpha",
  13.              "binding_name_override": "#alpha",
  14.              "binding_type": "global"
  15.         },
  16.         {
  17.              "binding_name": "#hud_propagate_alpha",
  18.              "binding_name_override": "#propagateAlpha",
  19.              "binding_type": "global"
  20.         }
  21.     ]
  22. }
复制代码

这样,此按钮控件的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:玩家是否没在骑乘

18

主题

48

回帖

36

积分

Lv.2 石器学徒

UID
183776
小麦
1
金锭
591
下界之星
0
沙发
发表于 2021-12-17 09:28:45 来自手机 | 只看该作者 IP:浙江
顶.png

22

主题

93

回帖

51

积分

Lv.3 矿物能手

UID
8595325
小麦
0
金锭
159
下界之星
0
板凳
发表于 2021-12-17 10:49:17 来自手机 | 只看该作者 IP:浙江
很小但很实用的东西,奈斯6

3

主题

14

回帖

7

积分

Lv.1 新手木匠

UID
7133994
小麦
0
金锭
50
下界之星
0
地板
发表于 2021-12-18 00:01:19 来自手机 | 只看该作者 IP:浙江


8

主题

9

回帖

12

积分

Lv.1 新手木匠

UID
8713984
小麦
0
金锭
30
下界之星
0
地下室
发表于 2021-12-18 12:11:40 来自手机 | 只看该作者 IP:浙江

2

主题

37

回帖

13

积分

Lv.1 新手木匠

UID
6482549
小麦
0
金锭
233
下界之星
0
6
发表于 2021-12-18 20:00:42 | 只看该作者 IP:河南
好用

8

主题

58

回帖

27

积分

Lv.2 石器学徒

UID
7100732
小麦
1
金锭
256
下界之星
0
7
发表于 2021-12-21 16:05:39 | 只看该作者 IP:湖南

7

主题

3

回帖

10

积分

Lv.1 新手木匠

UID
8228518
小麦
0
金锭
47
下界之星
0
8
发表于 2022-1-10 11:54:49 来自手机 | 只看该作者 IP:浙江
大佬,为什么绑定必须是global

3

主题

20

回帖

10

积分

Lv.1 新手木匠

UID
8444787
小麦
0
金锭
118
下界之星
0
9
发表于 2022-4-25 14:45:25 | 只看该作者 IP:江苏
mark 一下

3

主题

20

回帖

10

积分

Lv.1 新手木匠

UID
8444787
小麦
0
金锭
118
下界之星
0
10
发表于 2022-4-25 14:46:39 | 只看该作者 IP:江苏
请问这些游戏变量,是在哪儿找到的呢?

1

主题

114

回帖

30

积分

Lv.2 石器学徒

UID
8332815
小麦
0
金锭
129
下界之星
0
11
发表于 2022-7-19 20:11:21 来自手机 | 只看该作者 IP:浙江
顶.png
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部