最近研究虚幻引擎(Unreal Engine,UE),打算从Web开发转型成游戏开发。日后会不定期发布和游戏开发相关的经验总结,由浅入深。


UE的学习主要三大块:GUI操作,蓝图,C++。虽然对于外行人来说不学C++也能做UE开发,但计算机专业的同学可以在最短的时间内掌握UE引擎,因为UE编辑器的GUI以及可视化语言蓝图都包含着很多“软件哲学”,似乎每一处的设计都散发着亲切感,让人一目了然。就像微信GUI的设计理念是让人“不用教就会用”,UE编辑器的GUI也渗透着许多行业设计的默契和习惯,蓝图实质上则是图形化的C++。

废话不多说,蓝图API中和计时器线程相关的函数有2个:Delay和Retriggerable Delay,经过研究,它们分别是节流延迟和防抖延迟。

Delay:节流

https://docs.unrealengine.com/en-US/BlueprintAPI/Utilities/FlowControl/Delay/index.html

Delay函数是自带节流属性的计时器,表面上它能让你”睡眠“一段时间后再执行下一个函数,背后还默默地给输入做了节流(throttle),文档上说:计时期间再次调用会被忽略,也就是给单位时间内函数调用次数设限。我们来做个实验:

我们来看这个线程:当按空格键后打印”Hello“,紧接着睡1秒,然后打印”Hello World“。游戏开始后疯狂按空格,控制台变成这样:

可以看到,按了多少空格就打印多少“Hello”,但1秒之内至多打印1个“Hello World”,因为Delay方法做了节流。

Retriggerable Delay:防抖

https://docs.unrealengine.com/en-US/BlueprintAPI/Utilities/FlowControl/RetriggerableDelay/index.html

Retriggerable Delay方法从字面上看是“可再触发”的延迟,文档上说计时期间如果再触发会重置计时器(清零),重新计时,直到规定时间内没有触发才算完成。这不就是防抖(debounce)吗,于是我们再做一个实验:

还是疯狂按空格,然后停止,控制台输出如下:

可以看出,只有最后一次输出了“Hello World”,意味着只有最后一个空格完成了Retriggerable Delay,这就是防抖。

总结:

学习虚幻引擎的API是一个漫长的过程,如何快速记忆决定了学习效率。人脑是有过目不忘的能力的,只是很难调用这个功能,能否调用它在于你能否成功“说服”自己的大脑,让大脑相信某个信息是有意义并值得存储的,然后大脑才会“秒记”这个信息。

建立知识点关联就是一种向大脑证明意义的绝佳方式,本文中,即使不提防抖节流的概念,相信你也能理解Delay的含义,但将Delay和已知的知识点联系起来,你就可以瞬间将它铭记。

虚幻引擎中的节流与防抖相关推荐

  1. 元宇宙开发:你在虚幻引擎中的第一个虚拟现实游戏

    了解如何开发零编程背景的Oculus Quest游戏 你会学到什么 为Oculus Quest构建应用程序 设计和开发虚拟现实游戏 在虚幻引擎中工作 使用材料和纹理 优化内容,实现移动和虚拟现实游戏的 ...

  2. 在虚幻引擎中使用Python批处理3:批量修改属性

    Unreal Python API 文档: - https://docs.unrealengine.com/4.26/en-US/PythonAPI/ 在上一篇文章在虚幻引擎中使用Python批处理2 ...

  3. 虚幻引擎中的反射(译)

    原文链接:https://www.unrealengine.com/en-US/blog/unreal-property-system-reflection?sessionInvalidated=tr ...

  4. 虚幻4 python_技术前瞻:虚幻引擎中的 Python

    原标题:技术前瞻:虚幻引擎中的 Python 在Autodesk University上,我们简单展示了最新的研究,它将解决CAD数据导入虚幻引擎这一复杂问题.这是Datasmith研发过程中的重大突 ...

  5. 《从C语言过渡到C++和虚幻引擎中的C++编程》教程①

    本系列文字教程的受众对象是刚刚经历完大一上的C语言期末考试的.仅具有一定C语言基础的新生. 如果您是上述对象,在看完本系列教程之后,您将收获C++编程入门和虚幻引擎中的C++编程入门知识以及一些游戏开 ...

  6. 教你学会虚幻引擎中的光线追踪功能使用,此教程必看

    在本教程中将展示虚幻引擎中的光线追踪功能.为了比较光线追踪引入的变化,我从头开始构建了一个独特的环境,其中包括各种材料和模块化资产.光线追踪是一个很棒的工具,可以让你更好地控制场景的视觉方面. 启用光 ...

  7. 终极Git课程——在虚幻引擎中的应用 The Ultimate Git Course – with Applications in Unreal Engine

    了解Git和GitHub.虚幻引擎C++项目的版本控制等等! 你会学到: Git是如何工作的 如何从命令行使用Git 使用GitHub.GitHub桌面应用程序.Visual Studio中的Git工 ...

  8. 如何改善虚幻引擎中的游戏线程CPU性能表现

    您游戏中的帧频率是不是太低? 您了解为什么会发生这种现象吗? 这是不是由于您同时生成了太多敌人?还是由于某个特定敌人过于消耗系统资源? 是由于您设置了过多的视觉特效,还是由于您所设计的战斗系统所造成的 ...

  9. 虚幻引擎中导出模型,并导入到Unity

    1.UE5 安装glTF 插件 在虚幻商城中添加glTF 免费插件 打开虚幻引擎插件面板,启用glTF 插件,并重启引擎 2.导出模型 选择要导出的模型资源,右键选择导出,选择格式为 gltf. 3. ...

最新文章

  1. linux redis经常自动关闭,Linux开启关闭redis
  2. javascript 权威指南第7版_免费领书 | 气相色谱与质谱实用指南(原著第2版)
  3. 《Adobe Illustrator大师班:经典作品与完美技巧赏析》—Bree Léman
  4. node.js 函数外定义的变量 函数内赋值后为什么不能带出_(44)python少儿编程之函数(五)--- 作用域...
  5. 商业银行vh是哪个银行的简称_各个银行的字母缩写?
  6. 【CodeForces - 660C】Hard Process (尺取 或 二分+滑窗,前缀和预处理)
  7. 金陵科技学院计算机答辩,金陵科技学院优秀毕业论文答辩ppt模板
  8. ServerProperties
  9. 自然语言5——初学者书籍
  10. RobotFramework特性总结
  11. FortiClient cannot establish caused by TLS version
  12. eclipseSVN的安装及使用
  13. CSR1010A05-IQQM-R首款单模单芯片蓝牙低功耗
  14. Java读文件的三种方式
  15. 青柚文案:水果店青柚推广文案,水果青柚广告文案
  16. 案例分享 | CEVA 使用 TensorFlow Lite 在边缘设备部署语音识别引擎及前端
  17. 100.64.0.0/10 运营商级NAT(Carrier-grade NAT)共享地址空间
  18. python合并excel的多个sheet
  19. sql查询:查询所有学生的个人信息和加入的多个班级(group_concat)
  20. R语言 均值聚类、中心聚类、系谱聚类、密度聚类、最大期望聚类

热门文章

  1. 照片的读取、显示和保存
  2. TabTransformer:用于表格数据的Transformer
  3. 微前端是什么、价值、不足、典型模式
  4. 奔驰A200L升级内饰氛围灯,发光涡轮等,绚丽多彩,温馨又惬意
  5. 怎么写竞品分析报告(思路):
  6. PostgreSQL 一复合查询SQL优化例子 - (多个exists , 范围检索 , IN检索 , 模糊检索 组合)...
  7. 大神李沐被曝离职亚马逊,投身大模型创业!网友:“AI 已成创业致富新思路?”...
  8. 三维渲染 体照明模型
  9. Qt (高仿Visio)流程图组件开发(二) 基本图元绘制 图元间连线绘制
  10. 美团新用户0.99充10元话费,秒到账,不实名不绑卡,超简单!