虚幻引擎中的节流与防抖
最近研究虚幻引擎(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和已知的知识点联系起来,你就可以瞬间将它铭记。
虚幻引擎中的节流与防抖相关推荐
- 元宇宙开发:你在虚幻引擎中的第一个虚拟现实游戏
了解如何开发零编程背景的Oculus Quest游戏 你会学到什么 为Oculus Quest构建应用程序 设计和开发虚拟现实游戏 在虚幻引擎中工作 使用材料和纹理 优化内容,实现移动和虚拟现实游戏的 ...
- 在虚幻引擎中使用Python批处理3:批量修改属性
Unreal Python API 文档: - https://docs.unrealengine.com/4.26/en-US/PythonAPI/ 在上一篇文章在虚幻引擎中使用Python批处理2 ...
- 虚幻引擎中的反射(译)
原文链接:https://www.unrealengine.com/en-US/blog/unreal-property-system-reflection?sessionInvalidated=tr ...
- 虚幻4 python_技术前瞻:虚幻引擎中的 Python
原标题:技术前瞻:虚幻引擎中的 Python 在Autodesk University上,我们简单展示了最新的研究,它将解决CAD数据导入虚幻引擎这一复杂问题.这是Datasmith研发过程中的重大突 ...
- 《从C语言过渡到C++和虚幻引擎中的C++编程》教程①
本系列文字教程的受众对象是刚刚经历完大一上的C语言期末考试的.仅具有一定C语言基础的新生. 如果您是上述对象,在看完本系列教程之后,您将收获C++编程入门和虚幻引擎中的C++编程入门知识以及一些游戏开 ...
- 教你学会虚幻引擎中的光线追踪功能使用,此教程必看
在本教程中将展示虚幻引擎中的光线追踪功能.为了比较光线追踪引入的变化,我从头开始构建了一个独特的环境,其中包括各种材料和模块化资产.光线追踪是一个很棒的工具,可以让你更好地控制场景的视觉方面. 启用光 ...
- 终极Git课程——在虚幻引擎中的应用 The Ultimate Git Course – with Applications in Unreal Engine
了解Git和GitHub.虚幻引擎C++项目的版本控制等等! 你会学到: Git是如何工作的 如何从命令行使用Git 使用GitHub.GitHub桌面应用程序.Visual Studio中的Git工 ...
- 如何改善虚幻引擎中的游戏线程CPU性能表现
您游戏中的帧频率是不是太低? 您了解为什么会发生这种现象吗? 这是不是由于您同时生成了太多敌人?还是由于某个特定敌人过于消耗系统资源? 是由于您设置了过多的视觉特效,还是由于您所设计的战斗系统所造成的 ...
- 虚幻引擎中导出模型,并导入到Unity
1.UE5 安装glTF 插件 在虚幻商城中添加glTF 免费插件 打开虚幻引擎插件面板,启用glTF 插件,并重启引擎 2.导出模型 选择要导出的模型资源,右键选择导出,选择格式为 gltf. 3. ...
最新文章
- linux redis经常自动关闭,Linux开启关闭redis
- javascript 权威指南第7版_免费领书 | 气相色谱与质谱实用指南(原著第2版)
- 《Adobe Illustrator大师班:经典作品与完美技巧赏析》—Bree Léman
- node.js 函数外定义的变量 函数内赋值后为什么不能带出_(44)python少儿编程之函数(五)--- 作用域...
- 商业银行vh是哪个银行的简称_各个银行的字母缩写?
- 【CodeForces - 660C】Hard Process (尺取 或 二分+滑窗,前缀和预处理)
- 金陵科技学院计算机答辩,金陵科技学院优秀毕业论文答辩ppt模板
- ServerProperties
- 自然语言5——初学者书籍
- RobotFramework特性总结
- FortiClient cannot establish caused by TLS version
- eclipseSVN的安装及使用
- CSR1010A05-IQQM-R首款单模单芯片蓝牙低功耗
- Java读文件的三种方式
- 青柚文案:水果店青柚推广文案,水果青柚广告文案
- 案例分享 | CEVA 使用 TensorFlow Lite 在边缘设备部署语音识别引擎及前端
- 100.64.0.0/10 运营商级NAT(Carrier-grade NAT)共享地址空间
- python合并excel的多个sheet
- sql查询:查询所有学生的个人信息和加入的多个班级(group_concat)
- R语言 均值聚类、中心聚类、系谱聚类、密度聚类、最大期望聚类
热门文章
- 照片的读取、显示和保存
- TabTransformer:用于表格数据的Transformer
- 微前端是什么、价值、不足、典型模式
- 奔驰A200L升级内饰氛围灯,发光涡轮等,绚丽多彩,温馨又惬意
- 怎么写竞品分析报告(思路):
- PostgreSQL 一复合查询SQL优化例子 - (多个exists , 范围检索 , IN检索 , 模糊检索 组合)...
- 大神李沐被曝离职亚马逊,投身大模型创业!网友:“AI 已成创业致富新思路?”...
- 三维渲染 体照明模型
- Qt (高仿Visio)流程图组件开发(二) 基本图元绘制 图元间连线绘制
- 美团新用户0.99充10元话费,秒到账,不实名不绑卡,超简单!