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

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

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

相关推荐
小六*^____^*2 小时前
虚拟列表学习
前端·javascript·学习
Filotimo_2 小时前
Spring Data JPA 方法名查询特性的使用
java·开发语言·windows
代码栈上的思考2 小时前
MyBatis:注解方式实现数据库 CRUD 全操作
java·开发语言·mybatis
C语言小火车2 小时前
【C++】学生管理系统设计与实现丨SQLite数据库版本
开发语言·c++
代码游侠2 小时前
学习笔记——IPC(进程间通信)
linux·运维·网络·笔记·学习·算法
JIngJaneIL2 小时前
基于java+ vue学生选课系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
li.wz2 小时前
JDK17 深度解析:从特性实现到生产实践
java·开发语言
冰冰菜的扣jio2 小时前
理解类加载过程
开发语言·python