如同上一节讲的那样,设置饥饿值,口渴值等操作基本相同。所以为了避免重复工作,我们可以塌陷为宏或者塌陷为函数。

现在实践一下,宏与函数的区别。

此时是塌陷为函数。

在函数内,用返回节点替代饥饿事件

在函数后面增加一个饥饿事件

测试,饥饿事件触发很多次,因为不管函数内逻辑怎样,函数后面的事件都会被触发,

----------------------------------------------------------------------------------

塌陷为宏

输出替代饥饿事件

宏后面的事件可以正常执行一次。

-----------------------------------------------------------------------------------------------------------------------

很明显我们应该使用宏去完成这个逻辑。

选中要塌陷的代码,右键,塌陷为宏

 给该宏重命名为DecreaseValue

此时这个宏并没有执行线的接口,我们需要添加输入。

进入宏,点击 输入值

添加输入值

选择输入值类型为exec

此时就有了接口

这样我们就可以连线了

同理,给输出也增加一个输出口。

如果想隐藏new param这个名字,我们可以这样重命名,execute和then

 

删掉这个饥饿事件,并连上输出

宏就是提供一个公用的逻辑处理过程,所以不同的数值可以输入到宏里面,进行逻辑处理,然后输出处理的结果。

所以我们需要额外添加三个输入参数:TargetValue(接收current值)、DecreaseSpeed(接收下降速度)、UpperBound(上限值)

将 TargetValue替代currenthunger,连线

将DecreaseSpeed替代hungerdecreasespeed,连线

将upperbound替代 maxhunger

这是外边的

 然后我们通过引用修改current值

先打上这个勾

通过节点设置变量

连线

继续连线

因为current值做了修改,我们要重新想蓝图中拖入一个

宏后面接一个饥饿事件

此外还有一个bug,在宏里,获取delta并与速度相乘。

测试,成功。

现在试一下,其他变量,口渴度和体力。

添加两个自定义事件

添加我们做好的宏,赋予相应的变量。

测试成功。

为了保持代码整洁,我们添加sequence节点。

连线

塌陷成nodes(不会对性能造成影响,只是视觉上的折叠),并重命名

17_ue4进阶末日生存游戏开发[塌陷为宏]相关推荐

  1. 27_ue4进阶末日生存游戏开发[计时器]

    创建actor蓝图类 游戏的时间是虚拟的,比如一天可以是现实中的100s,也可以是300s. 所以我们在蓝图中创建一个变量,来表示虚拟的一天是多长时间. 将他的默认值设为300 我们将其设置为publ ...

  2. 14_ue4进阶末日生存游戏开发[第一人称和第三人称的切换]

    在项目设置里面,新增加input设置ToggleView输入事件,输入为键盘v 打开小白人的蓝图,发现我们蓝图里只有一个默认的第三人你相机. 新增加一个相机,并为相机重命名,注意相机在哪一层里. 为了 ...

  3. 15_ue4进阶末日生存游戏开发[设置和初始化属性]

    需求:增加以下属性 我们可以将这些属性变量放在playerstate里面,为了方便我们也可以放在character里面. 我们在角色character里面,增加文件夹live,用来存放这些变量. 增加 ...

  4. 47_ue4进阶末日生存游戏开发[基础游戏循环]

    在小白人蓝图里添加变量,HealthDecreaseSpeed,float类型 找到该节点 添加一个宏  然后我们创建一个GoDie自定义事件 调用这个事件  添加一个宏用来改变health下降的速度 ...

  5. 26_ue4进阶末日生存游戏开发[僵尸添加动画和扣血效果]

    给僵尸npc添加动画和扣血效果 首先新建一个动画文件夹 新建一个动画蓝图 一般只要是不做汽车啊等模型,我们一般选Animinstance 因为僵尸是女英雄,所以我们选择女英雄的动画 重命名Zombie ...

  6. 22_ue4进阶末日生存游戏开发[EQS]

    EQS:环境查询系统 功能:1.按照规则生成点 2.跟踪搜寻目标 3.过滤目标 打开编辑器偏好设置 搜索eqs 我们得打勾 有什么变化呢? 创建AI的时候,出现了一个eqs 创建一个eps 进去之后, ...

  7. 21_ue4进阶末日生存游戏开发[行为树]

    上一节中setvalue只是我们测试用的,一般不会像上一节那样用. aicontroller的作用很简单,就是用游戏开始事件来运行一下行为树. 为了练习行为树,我们做一个原始demo:没看到主角就巡逻 ...

  8. 33_ue4进阶末日生存游戏开发[拾取面板UI]

    添加UI控件蓝图,命名为PickablePannel 再拉进去一个panel(为什么需要panel:他下面可以有任意多的组件,可以借助锚点进行方便相对布局) 技巧:按住shift+ctrl再点击锚点, ...

  9. 03_ue4进阶末日生存游戏开发[准星]

    进入游戏模式蓝图,选择默认准星 进入准星的蓝图  将准星变成白色 进入贴图,并将这个东西改成0 改成白色之后,如果我们想将准星再变为红色,我们可以直接调整蓝图就可以了. 打开准星蓝图,将G和B都改成0 ...

  10. 20_ue4进阶末日生存游戏开发[AI基础框架搭建]

    创建僵尸文件夹,僵尸我直接用的女英雄的模型,僵尸没有免费的资源. 在文件夹中创建character,并重命名 添加女英雄的mesh 创建ai的controller 僵尸character选择我们创建的 ...

最新文章

  1. 树形dp技巧,多叉树转二叉树
  2. php 编译安装 png.h,PHP编译安装时常见错误解决办法【大全】
  3. mysql left join两个表,mysql left join 多个表
  4. 先装VS 在装IIS遇到的问题
  5. React setStats数组不更新,百思不得其解。
  6. 运放电路分析_必看!运放电路PCB设计技巧
  7. Winform开发框架中工作流模块之申请单草稿处理
  8. 磁盘位置_Win10创建和附加虚拟硬盘|Win10怎么创建VHD虚拟磁盘
  9. apipost脚本使用一
  10. [转载] JavaParser 无法解析链式调用的问题
  11. select2 api参数中文文档
  12. linux怎么查看.pcd文件,PCD文件格式详解及在PCL下读取PCD文件
  13. 一份硬核计算机科学CS自学计划
  14. 迅捷网络路由器服务器无响应怎么办,迅捷(FAST)300M无线路由器设置后不能上网怎么办?...
  15. 孩子英语课听不懂?还要给孩子找线上外教英语吗?
  16. 数字IC面试手撕代码(一)
  17. java废弃方法_JAVA9之后废弃newInstance()方法
  18. 【深度之眼cs231n第七期】笔记(四)
  19. 不影响1,4丁炔二醇(BYD)的情况下去除铜离子的工艺
  20. 查看终端设备接入交换机的端口方法

热门文章

  1. Failed to load resource: the server responded with a status of 404 (Not Found)
  2. 【selenium】无界面浏览器使用代理IP
  3. [Python深度学习](五)深度学习用于文本和序列
  4. Spring Cloud Bus 无法 bus-refresh 问题
  5. 如何避免智能手机出现高额国际漫游费?
  6. SHELL syntax error unexpected end of file 提示错误
  7. 交并比及非最大值抑制
  8. 间字距、单词距、半透明、影子
  9. Android textview设置行间距及字距,下划线
  10. Hello Future|2049闪斗士狂欢趴