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

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

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

相关推荐
琹箐6 分钟前
最大堆和最小堆 实现思路
java·开发语言·算法
戌中横13 分钟前
JavaScript——预解析
前端·javascript·学习
Monly2139 分钟前
Java:修改打包配置文件
java·开发语言
●VON1 小时前
React Native for OpenHarmony:2048 小游戏的开发与跨平台适配实践
javascript·学习·react native·react.js·von
山岚的运维笔记1 小时前
SQL Server笔记 -- 第18章:Views
数据库·笔记·sql·microsoft·sqlserver
我命由我123451 小时前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
ZH15455891311 小时前
Flutter for OpenHarmony Python学习助手实战:自动化脚本开发的实现
python·学习·flutter
island13141 小时前
CANN ops-nn 算子库深度解析:核心算子(如激活函数、归一化)的数值精度控制与内存高效实现
开发语言·人工智能·神经网络
xcLeigh1 小时前
Python入门:Python3 requests模块全面学习教程
开发语言·python·学习·模块·python3·requests
xcLeigh1 小时前
Python入门:Python3 statistics模块全面学习教程
开发语言·python·学习·模块·python3·statistics