Files
netease-modsdk-wiki/docs/mconline/90-知识库获奖教程/2-界面与交互/3-定义按钮并执行代码.md
boybook 760c2dd9ad 2.6
2025-12-01 20:59:16 +08:00

129 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 定义按钮并执行代码
> 本篇教程获得第一期知识库优秀教程奖。
>
> 获奖作者幻尘Team-幻尘。
## 前言
本教程针对懂得客户端服务端事件等的Python脚本开发的萌新以及本教程内的执行方式可能有些繁琐(大概是,大佬不喜勿喷,谢谢!)。
**学习前提:**
1. 熟悉基础的`modMain`注册、客户端`ListenForEvent``UnListenForEvent`的操作。
2. 掌握一点点Python语法基础。
3. 有心学习!!!还要有电脑。
## 教程开始
### 制作UI
1. 首先我们需要打开 **MCstudio编辑器** ,创建一个附加包,然后点击编辑,进入 **界面编辑器**
2. 如下图,我们的包体当中还不具备 **UI文件** ,因此,我们需要点击左边的按钮 **新建一个UI文件**
![./images/](./images/3_0.png)
![./images/](./images/3_1.png)
3. 接下来输入你要创建的UI文件的名称点击创建即可。
![./images/](./images/3_2.png)
4. 这时候我们可以看到左边的界面出现了 名称为 **main 的 画布** 。接下来我们就可以在main画布的中开始创造自己的UI了**PS必须先选中这个main画布在它的目录下开始创建你的UI。**
5. 选中画布之后呢,我们就可以点击顶栏的创建自己的按钮啦。
![./images/](./images/3_3.png)
之后,我们就可以看见这个令人喜悦的按钮啦。
![./images/](./images/3_4.png)
**PS如果你需要修改按钮的位置、大小、字体、内容均可以在右边的面板中设置这里不过多介绍可以自行研究如图↓**
![./images/](./images/3_5.png)
6. 那我们就拥有了一个按钮了好吧,此时我们需要创建出几个 **脚本文件:如图,关于客户端服务端的注册以及配置,我就不过多赘述,大家应该都会**
![./images/](./images/3_6.png)
### 注册UI并且为按钮添加回调事件
1. 重点讲讲如何注册UI。
首先我们创造完了UI脚本文件注册配置好了客户端等。我们选择先打开客户端脚本文件`ListenForEvent`以及`UnListenEvent`中分别监听和反监听 **`UnInitFinished` 事件用于接下来的创建、注册UI** 。
![./images/](./images/3_7.png)
![./images/](./images/3_8.png)
2. 这时候监听完毕之后呢,我们就可以使用这个`UnInitFinished`事件来注创建UI了。
首先输入如图所示中的第一行代码。
```python
clientApi.RegisterUI("Script_HuanChen6", "HuanChenUi", "Script_HuanChen6.uiScript.HuanChenScreenNode6.HuanChenScreenNode6",
"HuanChenUi.main")
```
我们来解释一下第一个参数指的是你的MOD的名称。第二个参数呢是UI的名称第三个参数呢是UI文件的路径。第四个参数呢是ui名.画布。
![./images/](./images/3_9.png)
注册完毕之后呢,我们可以开始 注册按钮并且为按钮添加回调了。
3. 打开ui文件进入之后我们在Init中声明两个变量一个是用来代表按钮的变量一个是表示按钮路径位置的变量。PS按钮的路径只需要在界面编辑器中选中按钮然后右键你就会看见一个复制路径的选项点击即可复制路径。
![./images/](./images/3_10.png)
![./images/](./images/3_11.png)
4. 接下来我们在UI文件中的`Create`中。输入这些代码:
```python
self.button = self.GetBaseUIControl(self.where_button).asButton()
self.button.AddTouchEventParams({'isSwallow': True})
self.button.SetButtonTouchDownCallback(self.button)
```
也是无脑照抄就行趴,`self.button`就是我们之前声明的一个用来表示按钮的变量。
![./images/](./images/3_12.png)
5. 输入好之后我们在下面直接def一个函数。为按钮的回调事件添加逻辑代码吧
![./images/](./images/3_13.png)
PS可能讲的有些急促有些许纰漏大佬们不喜勿喷吧嘤嘤嘤。
大功告成啦!!!