字符串与数字转换
在本教程中,你将学习如何将数字字符串转换为数值,以及将数值转换为文本字符串。
概述
在很多情况下,文本字符串会通过标题、操作栏、记分板或其他来源传递到用户界面。当我们希望根据传入的字符串动态更改元素时,能够进行数值比较会非常有用。然而,像"34"或"89"这样的数字字符串通常会被视为文本,无法与数字进行比较,只能与其他字符串比较。这时,我们需要将字符串转换为数字。
要将字符串转换为数字,我们将利用乘法运算。任何数字字符串乘以一个数字,或者从包含数字的字符串中去除文本,都会使游戏将该值读取为数字而非字符串。
字符串转数字
以下代码创建了一个标签元素,当添加到根面板时,如果记分板侧边栏中的最高值在100-999之间,就会显示该数值。
"string_to_number": {
"type": "label",
"text": "#player_score_sidebar",
"bindings": [
{
"binding_name": "#player_score_sidebar",
"binding_type": "collection",
"binding_collection_name": "scoreboard_scores"
},
{
"binding_type": "view",
"source_property_name": "(#player_score_sidebar * 1)", // 将分数从字符串转换为数字
"target_property_name": "#score"
},
{
"binding_type": "view",
"source_property_name": "((#score > 99) and (#score < 1000))", // 仅在100-999之间可见
"target_property_name": "#visible"
}
]
}第一个绑定读取记分板侧边栏中的最高值(该绑定被硬编码为字符串),第二个绑定通过将该分数乘以1(也可以从中减去任何文本字符串)将其转换为数字,第三个绑定使元素仅在分数大于99或小于1000时可见。
注意: 如果你希望数字以浮点数而非整数形式读取,请将一个使用浮点数的变量或绑定传入方程,例如除以1.0(必须通过变量或绑定实现——直接放置浮点数无效)。这对于#clip-ratio绑定特别有用。
数字转字符串
以下代码创建了一个标签元素,当添加到根面板时,如果传入格式为"strength: #"的标题,就会显示数字#。
"number_to_string": {
"type": "label",
"text": "#text",
"bindings": [
{
"binding_type": "global",
"binding_name": "#hud_title_text_string"
},
{
"binding_type": "view",
"source_property_name": "('§z' + (#hud_title_text_string - 'strength: '))",
"target_property_name": "#text"
}
]
}在使用标题、副标题等传递包含数字的文本时,这种方法可以让你只显示数字。通过减去多余文本来剥离字符串中的数字后,在数字前添加文本可以将值转换为字符串(text参数无法读取具有数值的绑定)。在这个例子中,减法周围的括号不是必需的,但用于显示它转换了数字而不仅仅是保持其为字符串。添加的文本§z是一个不存在的Minecraft格式代码,因此它不会在数字显示中注册,也不会影响标签的颜色参数。如果数字周围有无法全部减去的可见文本,一个好的去除方法是使用"clips_children": true和适当大小的面板来包裹该元素。


