枚举类 `ETriggerEvent`

枚举类 ETriggerEvent,这是Unreal Engine Enhanced Input系统中的一个核心概念。让我详细解释它的功能:

功能概述

ETriggerEvent 定义了输入触发器事件的各种状态,用于描述输入动作在不同帧之间的状态转换。它本质上是一个状态机,用于跟踪输入动作的完整生命周期。

各个状态的含义

1. None (无事件)

  • : 0x0
  • 描述: 没有显著的触发器状态变化,也没有活动的设备输入
  • 状态转换: 初始状态或空闲状态

2. Triggered (已触发)

  • : 1 << 0
  • 描述: 经过一个或多个处理tick后触发发生
  • 状态转换 :
    • None → Triggered
    • Ongoing → Triggered
    • Triggered → Triggered

3. Started (开始)

  • : 1 << 1
  • 描述: 开始触发器评估的事件
  • 重要: 如果Triggered也在同一帧发生,Started事件会先触发
  • 状态转换 :
    • None → Ongoing
    • None → Triggered

4. Ongoing (进行中)

  • : 1 << 2
  • 描述: 触发处理仍在进行中
  • 示例: 用户按住按键但尚未达到"按住"时间阈值
  • 状态转换: Ongoing → Ongoing

5. Canceled (已取消)

  • : 1 << 3
  • 描述: 触发被取消
  • 示例: 用户在"按住"时间阈值前释放按键
  • 状态转换: Ongoing → None

6. Completed (已完成)

  • : 1 << 4
  • 描述: 触发状态从Triggered转换到None,表示触发完成
  • 注意: 如果同一帧有触发器报告Ongoing,Completed不会触发
  • 状态转换: Triggered → None

实际应用场景

按键按下示例:

复制代码
帧1: None → Started (按键按下)
帧2: Started → Ongoing (按住按键)
帧3: Ongoing → Triggered (达到阈值)
帧4: Triggered → Completed (释放按键)

按键取消示例:

复制代码
帧1: None → Started (按键按下)
帧2: Started → Ongoing (按住按键)
帧3: Ongoing → Canceled (提前释放按键)

技术特性

  1. 位标志枚举 : 使用 ENUM_CLASS_FLAGS 宏,允许组合使用多个状态
  2. 蓝图支持 : BlueprintType 元数据使其可在蓝图中使用
  3. 编辑器集成 : UseEnumValuesAsMaskValuesInEditor 在编辑器中显示为掩码值

在Enhanced Input中的作用

这个枚举是Enhanced Input系统的核心,用于:

  • 定义输入动作的触发条件
  • 处理复杂的输入序列(如连击、长按等)
  • 提供精确的输入事件时序控制
  • 支持多种输入设备的统一处理

这个设计使得输入处理更加精细和可控,能够满足复杂游戏输入需求。

相关推荐
楼田莉子10 分钟前
Docker学习:Docker介绍及其架构介绍
运维·后端·学习·docker·容器·架构
郝学胜-神的一滴13 分钟前
干货版《算法导论》07:递归视角下的选择排序与归并排序
java·数据结构·c++·python·程序人生·算法·排序算法
fanged15 分钟前
C++的汇编实现(TODO)
笔记
YY&DS18 分钟前
Qt 嵌入 CEF 在 Linux 下必须设置 `QT_XCB_GL_INTEGRATION=xcb_egl才能加载网页
linux·开发语言·qt
csdn_aspnet21 分钟前
javascript 算法 LeetCode 编号 70 - 爬楼梯
开发语言·javascript·算法·leetcode·ecmascript
星夜夏空9927 分钟前
FreeRTOS学习(7)——任务列表
java·前端·学习
不羁的木木29 分钟前
Form Kit(卡片开发服务)学习笔记01-核心概念与架构设计
笔记·学习·harmonyos
Mikowoo00729 分钟前
神经网络 替代 线性模型_进行模型学习
人工智能·神经网络·学习
han_hanker33 分钟前
BeanUtils.copyProperties 和序列化的问题
java·开发语言·spring boot
野生技术架构师35 分钟前
牛客网2026互联网大厂Java面试题汇总,附官方级答案解析
java·开发语言