UE4制作一个蓝图的多功能鼠标宏(一)——单击、双击和取消点击

用了这么多年操作系统后发现,我们早就被科技巨头驯化,单击双击早就已经变成肌肉记忆了。
这就叫设计规范——也叫“人类调教说明书”。从这个角度看,某些科技巨头为“确认键”应该在左在右打得不可开交完全可以理解。我们也没必要逆潮流去开发新的操作方式,去和科技巨头去争夺人类主宰权。
当然,如果你的应用已经拥有了一套操作方式,用户也养成了使用习惯,并体验良好。那么也没有必要去改成所谓的标准。(读者读至此处,应已自然而然地意识到博主在暗示红警2和红警3,并露出赞同的微笑)

那么假设你的用户用惯了windows,鄙视你现在蹩脚的操作体验,甩你一脸需求,要你与国际接轨。你很可能就需要这么一个东西了。。。
一直想把常用的功能做成模块化,即插即用,不至于每个工程都要重新做。那么从鼠标操作入手最好不过了,顺便在这里记录一下心得,日后也当个笔记。


UE4制作一个蓝图的多功能鼠标宏(一)单击、双击、取消点击

先从熟练操作鼠标的肌肉记忆里回忆一下,邪恶的科技巨头是如何把我们调教成熟练使用鼠标的乖宝宝的。
既然做最基础的东西,那我马上从蚯状肌附近找到了一些关于“单击双击”有关的操作体验的记忆,那就是“取消点击”,这个被无视却又最常用的操作。

于是今天先做基础功能“单击双击”,和一个优化体验的功能,“取消点击”


  • 单击双击是基础中的基础,自然不用多解释
  • “取消点击”是一种点击过程中的“后悔药”,具体操作如下图所示。这次我想要手动实现这个功能,谁能拒绝后悔药呢?

这里写图片描述
点击保存时,突然想起今天心血来潮把项目改的烂七八糟,这保存已经按下去了,一撒手可能会死
此时你按住按钮不松手,拖出范围再释放,达到了取消点击行为的目的
你因为后怕而出了一身冷汗,如果没有这个后悔药机制,明天就可能去天桥卖手抓饼了

逻辑基本如下

姑且用核弹发射举个例子,要做一个点击按钮发射核弹的发射系统

顺序逻辑信息反馈说明
1移动鼠标到可交互的元素上(例如一个按钮状的模型)可选择鼠标指针改变成手指图标、或者按钮上显示出“Don’t Touch Anything”等,用于示意此按钮为可点击的元素
2按下并保持按下状态按下此时按钮以是按下的视觉状态,但仍未触发事件
3判断-系统开始紧张起来了,用户此时会突然拖动鼠标 反悔吗?
4原地抬起/拖动抬起复原为默认状态或已被使用状态执行发射/取消发射


单击是抬起鼠标才“确认”执行后续功能



反悔机制,例如用户A想发射核弹,按下按钮时,用余光发现核弹目标定在了自己家,现在突然反悔,此时可以在不抬起鼠标的情况下,拖动鼠标移出按钮再松手。这样可以取消触发点击操作


注意
双击是单击两次,必含一个单击。也就是理论上不能单双击功能共存
例如:单击按钮的功能是发射核弹,双击按钮的功能是弹出修改核弹目标的窗口
此时用户A如果想修改核弹目标,就会在双击的第一击按完、第二击未按之前,让自己的户口地址从地球上抹去
做相关业务的同行务必慎重


嗯,我一如既往的信任蚯状肌,并以此为逻辑开始

做UE4蓝图吧

要说明UMG的小部件可以用自带的 onDoubleClick ,操作UMG按钮之类的部件可以直接使用。此处蓝图适用于UMG部件以外的用处。


第一部分 单击、双击

创建宏

1

新建一个 蓝图宏库 。这里做成独立的宏,就可以在任何蓝图使用它,而不会与自身发生冲突。
这里要注意!宏库只能保存不能编译。若修改了宏的内容,需要去编译使用了这个宏的蓝图


2

用帅气的指法将宏库命名为 Macro_Click


3

点击加号新建一个宏,命名为 Click (右边上角红框处)
蓝图内容如图
扩展一下,宏中是没有全局变量的,而下面的 Local布尔型 (Local Boolean) 就是宏的局部变量,相当于 get 变量 第一次看到的朋友不要慌张。而上面的 分配(Assign) 自然就是 Set 变量
具体节点功能在这里就不细说了,官方文档都可以查得到


在关卡蓝图中使用宏

1

内容如图,在关卡蓝图直接输入Click就可以找到我们自己做的宏了
至此,单击双击的最最基础的功能就已经实现了


第二部分 取消点击

在宏中添加新功能

这里写图片描述

如图所示,很基础,没什么复杂的东西,改了输入值和输出值的名字等,还调皮的把实例材质改成红色
取消点击部分:
通过获取按下和抬起时的屏幕位置,计算出这个过程中鼠标位移了多少距离。这里用 Get mouse Position on Platform 是因为我觉得显示器的大小会比窗口的大小准确,也适合更复杂的情况。然后对比 “取消点击的距离” 值,判断用户是否已经做出了 “取消单击” 的操作
将距离连到输入值 “取消点击的距离” ,使其可以在外部进行修改。
“取消点击的距离” 的默认值此时设置为10,“双击间隔” 为0.25


这里写图片描述

增加了判断,使其若“取消点击”,就不执行“单击”和“双击”


这里写图片描述

最后保存宏,把修改好的宏连上打印,编译,测试ok


结束

今天就做到这里,实现了基础的单击双击和取消点击。今后有时间还会继续完善扩展这个Click宏的功能~~

话说回来蚯状肌到底是哪块?

  • 15
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值