我是李君子 发表于 2024-2-5 14:57:18

[有json基础即可] MCJSON UI 奇技淫巧 2 - 底部对话栏

本帖最后由 我是李君子 于 2024-2-5 16:00 编辑

效果展示


想实现这样的对话栏效果
那么你一定要学习这个技巧

准备

• 原版的hud_screen.json一份
• 一个文本编辑器

技巧教学

打开自己包里的ui/hud_screen.json
找到hud_title_text ui元素里的 title子元素

然后我们看到这个元素是文字(label)元素,而不是我们的框panel元素或stack_panel啊
很多人呢遇到这里就不做了,因为要改元素种类会很麻烦( 其实还好 但是怕遇到bug )
不过呢,这是错误的,学过json的肯定都知道
Json只传递值,而处理在代码上
我们的json不会对代码进行处理
所以我们就猜想我们的这个文字元素也可以被赋予子属性( controls )
那么我们就创建一个controls数组
"controls" : []
Ok,然后我们来创建他的背景元素
我们都知道我们的json ui没有background-color,那怎么办呢
mojang的做法是拿图片当背景
然后来吧
创建一个名为bg_cb对象

{
                  "bg_cb": {
                      "type": "image",//图片类型
                      "texture": "textures/ui/Black",//黑底
                      "layer": 0,//图层为0
                      "fill": true,//填充
                      "size": ,//大小
                      "alpha": 0.3//透明度
                  }
                  }
然后我们就走了这样一个背景
然后我们来逐个分析
layer表示图层,我们让他在第0层,这样就不会在文字的上面显示
fill填充
size为什么要用具体数字呢
因为不用数字的话他会继承母元素title文本的大小
就会出问题
alpha表示透明度,不多赘述

然后我们会发现一个问题
我们的标题太大了
怎么办呢
把title里的font_size属性改为
font_size: 100,//这个属性不能是数字类型,所以使用100他会自动继承默认大小
然后去阴影把shadow属性改为false或者删掉
shadow: false
然后就ok了
然后就实现了刚才的效果
然后不要忘记加上绑定
然后效果就ok啦
你可以在试着输入以下指令
/titleraw @a title { "rawtext": [ { "text": "标题\nHello world"} ] }进行测试


结语

So easy and beautiful
学会了吗
[贴吧_滑稽][贴吧_滑稽][贴吧_滑稽]

克里昂一世 发表于 2024-2-5 15:16:29

我用不着,但我膜拜大佬!

尤基宇 发表于 2024-2-5 15:21:58

66666666666

Wy51 发表于 2024-2-5 15:27:06

[贴吧_滑稽][贴吧_滑稽][贴吧_滑稽][贴吧_滑稽][贴吧_滑稽]

qwertyiop135680 发表于 2024-2-5 17:44:09

[贴吧_呵呵]
页: [1]
查看完整版本: [有json基础即可] MCJSON UI 奇技淫巧 2 - 底部对话栏