枚举类 `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系统的核心,用于:

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

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

相关推荐
clint4563 天前
C++进阶(1)——前景提要
c++
夜悊3 天前
C++代码示例:进制数简单生成工具
c++
郝学胜_神的一滴4 天前
CMake 021: IF 条件判据详诠
c++·cmake
_wyt0014 天前
洛谷 B3930 [GESP202312 五级] 烹饪问题 题解
c++·gesp
LDR0064 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术4 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
通信小呆呆4 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
码云数智-园园4 天前
C++20 Modules 模块详解
java·开发语言·spring
H__Rick4 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee4 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale