Files
netease-modsdk-wiki/docs/mcguide/20-玩法开发/12-可视化编程/00-第一个蓝图Mod/30-蓝图逻辑编写:必要的准备工作.md
2025-03-17 13:24:39 +08:00

105 lines
7.3 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.
# 蓝图逻辑编写:必要的准备工作
回忆一下,我们的目标是:让猪每实际受到一次伤害,其移动速度都会翻倍。在此之前,我们需要做一系列的准备工作:
1. 获取实体预设对象:我们后面调整血量、设置速度等操作都需要指定具体是对谁进行;
2. 提升猪的血量:目的是为了让猪在我们的测试中不会打几下就去世了。这里需要调整血量上限和当前血量两个属性;
3. 设置并猪的速度和最大速度为了让演示效果比较夸张我们把猪的当前速度设置为0.05正常移速的五分之一并把它的最大速度设置为32同时需要使用两个变量将这两个速度值存储起来用于后续计算和赋值。
## 获取实体预设对象
我们需要在客户端初始化的时候就获取实体预设对象并存为一个独立的变量Parent以便在后续的逻辑中随时使用它。我们可以从服务端初始化节点的输出执行引脚Out拖出一条黄色的执行引线松开鼠标后会弹出节点菜单。
这里我们需要获取到的是当前蓝图节点的父预设(猪的实体预设),所以我们需要用到【获取父对象】这个接口。我们可以
1. 在节点列表中直接寻找这个节点(在你不知道节点名称的情况下通常需要这么做)
2. 输入中文关键词进行检索,例如“父对象”
3. 输入接口英文名称例如“GetParent”
这三个方法都可以找到我们需要的节点,在后续的编辑中使用哪种方式大家可根据实际情况自行选择。
![](./images/3-1.gif)
我们看到这里其实有2个【调用获取父对象】节点可以选择一个是【调用零件接口】一个是【调用预设对象接口】。其实对于我们当前的情境下使用这两个节点并没有什么区别但如果我们是在预设多层嵌套的情况下获取预设的父预设那么我们就不能使用零件接口的获取父对象节点了。
在成功获取到父预设的对象后,我们可以养成一个好习惯,将其用一个变量的形式存储起来,以便后续在图表其他位置或自定义接口的接口图表中调用。
我们首先在左侧脚本元素窗口中的变量菜单下点击右上角的“+”号创建一个变量并命名为【Parent】。由于父对象是一个Object类型不属于当前编辑器提供的自定义变量数据类型故我们就使用默认的Any类型即可不需对变量类型做出改动。
创建好【Parent】变量后我们将其从左侧变量菜单拖到图表空白处松开左键后选择【设置Parent】即可创建该变量的设置节点用于修改该变量的值。我们将【调动获取父对象】节点与【获取 Parent】节点通过黄色执行引线连接起来再将获取父对象的结果通过数据引线传递给设置Parent的参数Value即可将该对象传递到Parent变量存储起来。
![](./images/3-2.gif)
## 提升实体的血量
为了让猪不会在我们的测试过程中因为血量不足去世,我们需要将其最大血量和当前血量同时提升,需要用到的接口分别是【调用:设置属性最大值】和【调用:设置属性值】。(注意这里需要选择的是【调用预设对象接口】类)
![](./images/3-3.gif)
这两个节点都需要传入实体对象以确认是对哪个对象进行设置操作。这里由于我们之前已经将父对象存为了变量我们可以直接获取Parent变量的值然后将它传递给这两个设置接口的【调用对象】参数。
![](./images/3-4.gif)
下面我们需要确定的是,这个设置属性最大值和设置属性值的操作,是对实体的哪一个属性进行的。确定属性类型我们需要查阅对应属性类型的枚举值,并将其传递给这两个设置接口。
更一般情况下当我们不知道一个节点的参数或者返回值代表的含义可以直接在开发者官网的API文档中查阅对应接口的信息。比如这里我们通过搜索找到了【设置属性值SetAttrValue】这个接口在参数信息中我们可以看到attrType需要填写的是AttrType枚举值我们点击链接可以跳转到属性类型枚举值页面看到生命值Health对应的属性类型是0正好是默认值所以我们这里不需要改变这个参数的值。
![](./images/3-5.gif)
然后我们将这只猪的最大血量和当前血量设置都设置为80就可以完成提升血量的步骤了。这里我们直接把两个节点的【属性最大值】和【属性值】两个参数都改为浮点数float然后将数值都改成80即可。
![](./images/3-6.gif)
## 设置并存储实体的速度上限和初始速度
在一般情况下猪在游戏中的默认移动速度是0.25为了让演示效果更夸张些我们将它的初始速度调整为0.05并且将其最大速度设置为32。同时为了方便后续计算我们需要将猪的当前速度存储为变量Speed浮点型同时将猪的最大速度存储为变量MaxSpeed浮点型
速度最大值的设置和获取节点我们可以直接使用预设API的接口【设置最大速度】、【获取最大速度】
速度的设置和获取节点我们可以直接使用预设API的接口【设置速度】、【获取速度】。
![](./images/3-7.png)
我们可以直接从获取Parent的输出执行引脚再拖出一条执行连线连接到设置最大速度这样代表的逻辑就是先执行【设置属性最大值】→【设置属性值】这条执行线再执行【设置最大速度】这条逻辑。同时我们在最大速度参数处填入我们需要的速度上限32。
![](./images/3-8.gif)
设置好最大速度后我们需要将最大速度存为变量MaxSpeed。这里我们首先通过【获取最大速度】节点获取到当前实体的最大速度值即等于我们刚刚设置的32再创建一个名为MaxSpeed的浮点型float变量将其值设置为我们刚刚获取到的最大速度值。
![](./images/3-11.png)
同理我们还需要获取当前实体速度值并将其传给新建的变量Speed。
![](./images/3-12.png)
这样,我们就完成了设置并存储实体速度上限和初始速度的工作。
## 小技巧:通过分组、注释工具管理节点
如果图表中有太多的节点,我们通常会感觉比较混乱,寻找某条逻辑的时候不知道从哪里开始找。这时,我们就可以利用分组和注释工具对节点进行标识和管理。
我们在需要框选的节点左上角空白处点击右键,从菜单中选择【创建分组】,可以看到在图表中生成了一个默认大小的分组框,在框内的节点都会被默认识别为该分组的内容,并且在拖动分组的时候会被统一移动。我们可以更改分组的命名,调节分组框的大小使其囊括其他我们需要的节点,也可以更改分组的颜色,使其更加醒目。
![](./images/3-13.gif)
同样的,我们也可以为速度设置和存储的节点创建分组。
![](./images/3-15.png)
如果你需要为某个节点添加注释,可以对该节点点击右键,并选择【编辑注释】,这样可以方便地提供更多关于该节点的信息。
![](./images/3-14.gif)