UE4 输入系统(图文详解篇)

一、输入系统界面的一些基本概念

在这里插入图片描述

1、Action Mappings

这个动作映射是指瞬时动作完成后所要执行的事件,比如按下键盘空格键就执行玩家角色跳跃函数,松开空格键就执行玩家角色停止跳跃函数。
在这里插入图片描述
上图的"Jump"是其中的一个动作映射,触发方式有键盘空格键还有手柄,具体的动作有按下和释放两种,这两种动作可以绑定不同的函数,比如按下键盘空格键就执行玩家角色跳跃函数,松开空格键就执行玩家角色停止跳跃函数。C++中具体绑定方式如下图。
在这里插入图片描述

2、Axis Mappings

这个轴映射是指连续动作完成后所要执行的事件,比如按住键盘W键玩家角色向前移动,按住键盘S键玩家角色向后移动。
在这里插入图片描述
上图的"MoveForward"是其中的一个轴映射,控制玩家角色前后移动,触发方式有键盘W键、S键、向上箭头键、向下箭头键还有手柄,具体的动作只有按住一种方式,输入系统会根据玩家按住的时间长短计算出移动距离。

这个Scale是指玩家角色移动的方向和移动距离的缩放大小,Scale为正数则是向前移动,负数则是向后移动,Scale值越大,则移动距离就越大,一般Scale的绝对值都是1。C++中具体绑定方式如下图。
在这里插入图片描述

2.1、其他一些轴事件

在这里插入图片描述

MoveRight是控制玩家角色左右移动事件
在这里插入图片描述

TurnRate是控制玩家角色左右旋转事件
在这里插入图片描述
可以通过键盘左箭头控制玩家角色摄像机向左移动,通过键盘右箭头控制玩家摄像机向右移动。以及还可以通过手柄控制。也不知为啥要加上个Rate,一开始我还以为是转向速率。。。


LookUpRate控制玩家角色摄像机上下旋转。
在这里插入图片描述
只能通过手柄来触发。因为键盘的向上箭头和向下箭头已经被用来控制玩家角色前后移动了。


Turn也是控制玩家角色摄像机左右旋转。
在这里插入图片描述
只要鼠标向右移动,则玩家角色摄像机就会向右移动,反之如果鼠标向左移动,则玩家角色摄像机就会向左移动。这里的鼠标移动你按不按住鼠标左键和右键以及滑轮也就是中键,结果都一样的。


LookUp也是控制玩家角色摄像机上下旋转
在这里插入图片描述
只要鼠标向上移动,则玩家角色摄像机就会向上移动,反之如果要鼠标向下移动,则玩家角色摄像机就会向下移动。这里的Scale之所以是-1是因为屏幕坐标系统中,原点在左上角。假设摄像机向上移动是正数,向下移动是负数,那么当鼠标光标从下方移动到上方时,移动的值是负数,再乘与Scale(-1)就会变成正数,摄像机则向上移动。
在这里插入图片描述

二、跟着源码跑一遍流程

1、事件的注册和触发流程

从C++的Main函数到while循环到引擎的tick循环函数到生成引擎对象、游戏对象、玩家对象、玩家角色的输入系统创建的流程如下图
在这里插入图片描述


我们接着看玩家角色绑定事件的具体过程。这里用动作映射事件举例。
在这里插入图片描述
在这里插入图片描述
这里将所有的动作映射事件代理(ActionDelegate)都存放到ActionBindings数组中。

具体的每个的动作映射事件所要执行的函数存放在 FuncDelegate中,以便触发事件时调用该函数。
在这里插入图片描述


有一个Tick循环函数在监听玩家的输入操作,当玩家鼠标按下时,把玩家的输入事件存放在KeyStateMap中。
在这里插入图片描述


同时有另一个Tick函数处理KeyStateMap里的事件,最终触发ActionDelegate的FuncDelegate
在这里插入图片描述

2、注意事项

最后有一个要注意的是,【项目设置】的Use Mouse for Touch一旦勾选上了,屏幕这里会显示模拟摇杆,并且动作映射触发方式为鼠标左键的事件无法触发。这里以我新建的测试动作事件为例。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


就是鼠标左键点击后无法执行到我测试用的test函数。
在这里插入图片描述
在这里插入图片描述


原因是FSlateApplication::OnMouseDown这里有个bIsGameFakingTouch的判断,也就是游戏是否开启模拟触摸。
在这里插入图片描述
当Use Mouse for Touch勾选了,并且是鼠标左键时,就会将动作事件转成触摸事件,会执行TouchDelegate,不会执行ActionDelegate

PlayerInput.cpp
在这里插入图片描述


设置bIsGameFakingTouch的流程如下图
在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
UE4中的WebBrowser是一个内嵌的浏览器控件,可以在游戏中加载和显示网页内容。它基于WebKit引擎,并提供了一些常见的浏览器功能,如导航、页面加载、JavaScript交互等。 使用WebBrowser可以实现一些与网页相关的功能,比如在游戏中显示网页广告、加载外部网页内容、实现在线多人游戏中的聊天功能等。下面是一些关键的概念和用法: 1. 在UE4中创建WebBrowser控件:可以通过在蓝图或C++代码中创建一个WebBrowser对象,并将其添加到游戏场景中。可以设置控件的位置、大小和外观等属性。 2. 导航:可以使用WebBrowser控件的Navigate函数来加载指定的URL或本地文件。还可以使用GoBack、GoForward和Reload等函数来导航到前一页、后一页或重新加载当前页面。 3. JavaScript交互:可以使用WebBrowser控件的ExecuteJavascript函数执行JavaScript代码,并通过OnJavaScriptEvent事件处理返回的结果。这使得在游戏中调用网页上的JavaScript函数成为可能。 4. 页面加载状态:可以通过OnLoadCompleted事件来获取页面加载完成的通知。还可以使用OnUrlChanged事件来跟踪URL的变化。 5. UI交互:可以通过设置控件的显示与隐藏来控制WebBrowser在游戏中的可见性。还可以通过设置InputMode来控制用户是否可以与网页进行交互。 需要注意的是,WebBrowser控件在不同平台上的表现可能会有所差异,因为它使用了底层操作系统的浏览器引擎。此外,WebBrowser在移动平台上的性能可能会受到一些限制,需要注意优化和适配。 这些是UE4中WebBrowser的一些基本概念和用法,希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值