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

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

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

相关推荐
Lhappy嘻嘻4 分钟前
Java IO|File 文件操作 + 字节流 / 字符流完整笔记 + 递归删除文件实战
java·笔记·php
科技道人18 分钟前
记录 默认置灰/禁用 app ‘Search Engine Selector‘ 的disable按钮
开发语言·前端·javascript
GLDbalala2 小时前
GPU PRO 5 - 4.6 Adaptive Scalable Texture Compression 笔记
笔记
xian_wwq3 小时前
【学习笔记】模型权重管理:Safetensors与私有化Hub(23/35)
笔记·学习
逝水无殇3 小时前
C# 异常处理详解
开发语言·后端·c#
其实防守也摸鱼3 小时前
运维--学习阶段问题解答(1)(自测)
linux·运维·服务器·数据库·学习·自动化·命令模式
ctrl_v助手3 小时前
Halcon学习笔记2
人工智能·笔记·学习
YUS云生4 小时前
Python学习笔记·第31天:FastAPI入门——路由、路径参数、查询参数与请求体
笔记·python·学习
旖-旎4 小时前
《LeetCode647 回文子串 || LeetCode 5 最长回文子串》
c++·算法·leetcode·动态规划·哈希算法
玖玥拾4 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#