《我的世界》搬砖节

《我的世界》搬砖节
五一搬砖节,给你整个世界!名侦探柯南联动第二弹上线,与各位顶尖侦探一起追捕怪盗基德!圣翼骑士抽奖降临,加入光明骑士团,一起守护白日童话世界!有光明就有黑暗,暗月寓言会员开箱,带你探索童话世界不为人知的另一面。什么?又有免费皮肤拿?0元购活动重新上线,快来领取你的免费皮肤吧!

扫码下载

下载
tp

界面编辑器的魔法:弹幕滚动术!

2021-09-19

上一期发发菌给大家

介绍了MC Studio中的各类界面控件

是时候实操一下了

想学会自制滚动弹幕吗?

想学习“血条出现术”吗?

那就赶紧跟发发菌一起

来感受界面控件的真正用途叭~

 

 

在界面编辑器里制作界面控件,仅仅是界面设计的第一步,开发者们还需要学会如何弹出界面,如何绑定界面空间和脚本

关于界面设计需要用到的软件工具,可以戳这里回顾详细介绍~

接下来发发菌将通过详细案例,带大家走一遍“流程”~

绘制基础界面

(1)在MC Studio中进入工程后,通过左上角的编辑器选项选择界面编辑器

(2)界面设计的内容最后会被放入一个json文件,它位于资源包的ui文件夹内。因此我们在左下角的【界面文件列表】右侧,点击“+”号新建一个界面文件,命名为custom_ui

(3)界面文件新建后,会自动在左上角的控件结构中,新增一个名为main主画布,这个名字可以任意更改,在后续使用MOD SDK声明界面的画布入口时,填对即可。

为了统一辨识度,下面的内容中,发发菌会对每个控件进行严格的命名,并以节点代称,方便大家阅读(✿◕‿◕✿)

(4)在main节点下,新建一个面板控件,并将它的名称改为entry_panel,即入口面板

(5)将entry_panel节点设置为125px长125px宽,点击属性中的锚点,将锚点设置为左上角。它会自动对齐左上角,无需通过拖拽的方式来对齐。

(6)在入口面板节点下,挂载一个图片控件,将其命名为color_image

在右侧属性栏中,将【使用贴图】设置为“原生”。轻击原生按钮入口,会跳出一个电脑的资源管理器,它会自动定位到原版资源文件夹下的textures文件夹;我们选择ui文件夹,并选择white_background.png贴图。

(7)在color_image节点的右侧属性栏中,找到【图片适配】选项,将九宫格类型选择“原版九宫”。

在上、下、左、右四个栏的任意一栏0像素点写为1像素点。这样贴图资源将会与节点大小匹配,平铺整个控件。

(8)将图片节点拉为100px长100px宽;锚点的父节点和子节点都选择向中间上部对齐

(9)在entry_panel节点下,新建一个名为black_button的按钮,将大小设置为50px长20px宽

此时按钮内文字会超过按钮的大小,显示不全;在black_button节点的属性栏下,将文字字号设置为8号,并将文字设置为:按我变黑

(10)在控件结构面板下,右键black_button节点复制一次;紧接着选择entry_panel节点粘贴上去。

将新的按钮控件名称改为white_button,并设置文字为:按我变白

(11)将black_buttonwhite_button节点锚点对齐中间下部,两个按钮平行分开

在后面使用MOD SDK创建界面时,我们将会学习如何绑定按钮,通过代码让白色贴图在黑色和白色之间来回变化( ̄▽ ̄*)

游戏内弹出界面

(1)切换回关卡编辑器,在资源管理器面板下,选择“行为包”;右键打开行为包所在的文件夹,在文件夹内新建一个脚本文件夹工程

(2)由于界面运行在客户端,并且界面功能仅需调用客户端接口,因此这里我们只注册一个客户端系统。

(3)新建一个CustomUi.py文件,导入ScreenNode类;新增一个Main类,并继承ScreenNode

(4)监听UiInitFinished事件,在回调函数内使用注册UI接口,界面必须注册才能创建。

其中有四个参数,分别对应:

① 命名空间;

② 界面名称;

③界面节点路径,与注册系统类似,即“脚本文件夹.CustomUi.Main”;

④ ui的json文件入口,即“custom_ui.main”。

(5)使用客户端的PushScreen接口,第一个参数即界面的命名控件,第二个参数即界面名称,分别对应注册界面的前两个参数。进入游戏后,可以查看效果

绑定控件和脚本

(1)在__init__下新建四个实例变量,分别对应:

① 继承基础画布后出现的主节点路径

② 主节点路径下的color_image路径

③ 主节点路径下的black_button路径

④ 主节点路径下的white_button路径

(2)重写Main类Create方法,使用AddTouchEventHandler接口添加两个按钮的回调;第一个参数是路径,第二个是回调函数名

(3)在回调函数内,将color_image图片设置为黑色白色

白色

rgb值为(255,255,255),除以255后为(0.0,0.0,0.0)

黑色

rgb值为(0,0,0),除以255后为(1.0,1.0,1.0)

整体流程熟悉了

接下来就跟着发发菌

做点有趣的小练习叭(^∀^●)ノシ

界面设计部分

(1)在主节点下新建一个图片控件,命名为background,将图片【贴图】类型改为“原生”,指向textures/ui/white_background.png

(2)打开“原版九宫”,在“上”位置填入1px,使贴图可以被自由拉伸到与控件大小相符合。

紧接着,将图片长度大小从固定大小改为百分比大小,设置为100%,将宽度大小设置为固定大小16px

(3)将background节点的锚点设置为居中靠上,向下偏移15px

(4)在background节点下,新建一个文本控件,命名为text锚点设置为居中长度大小同样设置为100%的百分比大小,宽度大小设置为固定大小16px

字颜色设置为黑色字号设置为8,添加6行间距让字靠中对齐,并将字的对齐方式设置为向右对齐

(5)将text节点偏移量设置为向左偏移100%的百分比大小,即-100%。这样字就会超出屏幕显示区域,同时顶在屏幕的左边

(6)打开界面源文件,对background控件进行自定义,向里面加入alpha键对,值为透明度的值,这里设置为0.9

1.0

不透明

0.0

全透明

同时添加color键对,可以对图片进行颜色叠加,这里设置为"color": [0.3647, 0.3647, 0.3647](即灰色的RGB值(92,92,92)除以255得出的结果)。

这样的操作可以让白色背景变成灰色,并带有透明度,颜值会变得更高✪ ω ✪

脚本代码部分

重写界面类的Create方法Update方法

(1)当界面每一游戏刻更新时,都会调用Update方法,我们在里面更新text节点的位置,让它从左边往右边移动。

(2)而Create方法会在界面创建后调用,在这里我们对文本内容进行设置。

这样我们就可以获得一个滚动弹幕啦~

界面设计部分

(1) 在主节点下新建一个进度条控件,取名为health_bar锚点设置为置中,并将长度设置为80像素宽度设置为10像素

(2)在主节点下新建一个文本控件,取名为health_text锚点设置为置中,并将长度宽度设置为与health_bar相当;同时字号设置为8号行间距设置为3

脚本代码部分

重写界面类的Create方法Update方法

当界面每一游戏刻更新时,都会调用Update方法,在这里我们可以使用一个小技巧:

通过query函数表我们可知,query.health会返回生物的生命值,而query.max_health会返回生物的最大生命值

往常处理时,获取生物的血量需要通过服务端获取,而使用GetMolangValue接口可以在客户端获取生物的血量信息,我们在这里更新血量的数值进度条的裁切程度

而在客户端系统上,我们通过在UiInitFinish事件添加一个实例变量,以此来确保从这之后,才能在AddEntityClientEvent事件里为其他实体生物绑定界面;在RemoveEntityClientEvent里移除界面。

经过发发菌的讲解

大家是否已经

掌握了界面控件的使用“魔法”呢?

熟能生巧

记得多操作几遍哟~

【关于“网易大神”】

网易大神

网易大神是网易游戏旗下的精英玩家社区。这里汇聚了广大精英玩家、游戏圈红人、行业大咖,集合了网易独家的官方资讯和福利趣闻,旨在为玩家打造一个丰富的游戏兴趣社交圈。玩家可以在网易大神与游戏中的好友实时聊天、多元互动;以游戏会友,结交更多游戏同好,和大神一起发现更多游戏乐趣。

官方网站:https://ds.163.com
官方微信:wyds_163

注册网易通行证

扫一扫关注微信

Minecraftgf

扫一扫关注微博

我的世界Minecraft

关闭
Android下载

安卓此次开放限号付费不删档测试,仅限集结首测玩家参与。未参与首测的玩家可进行预约,并请于1月12日参与全平台开放性测试

集结首测玩家请点击 >> 下载游戏