Files
BlueRoseNote/03-UnrealEngine/卡通渲染相关资料/渲染功能/ARC/Gameplay/UEI事件系统.md

2.5 KiB
Raw Blame History

title, date, excerpt, tags, rating
title date excerpt tags rating
UEI事件系统 2026-05-03 00:00:00 引擎回调接口,提供帧生命周期和输入处理钩子
ARC
Gameplay
Framework

UEI 事件系统

返回 Gameplay

概述

UEIUnreal Engine Interface事件系统提供了游戏逻辑与引擎生命周期之间的回调接口。它在引擎的关键时间点触发回调让游戏层能精确控制帧内的执行时序。

FUEIEventHandler

// UEIEventHandler.h
class FUEIEventHandler
{
    // 帧生命周期回调
    void BeginFrame();
    void EndFrame();
    void Update();

    // 输入处理钩子
    // 格斗游戏需要在精确的时间点采样输入
};

FUEISlateApplication

继承 FSlateApplication,扩展输入管理:

class FUEISlateApplication : public FSlateApplication
{
    // User/Controller ID 映射
    TMap<int32, int32> UserIndexMap;

    // 格斗游戏多手柄输入分配
};

格斗游戏中两个玩家可能使用不同的控制器,UserIndexMap 负责将物理控制器 ID 映射到游戏内的玩家 ID。

使用场景

  • 格斗游戏帧同步:在精确的帧时间点采样输入
  • 回放系统:按帧记录和回放输入
  • 控制器热插拔处理

完整代码解析

// UEIEventHandler.h — 引擎回调接口
class FUEIEventHandler
{
public:
    // 帧生命周期回调
    virtual void BeginFrame();   // 帧开始(输入采样时机)
    virtual void EndFrame();     // 帧结束
    virtual void Update();       // 逻辑更新
    
    // 格斗游戏需要在精确的时间点采样输入
    // 确保回放系统的帧同步正确性
};

// UEISlateApplication.h — Slate 输入管理扩展
class FUEISlateApplication : public FSlateApplication
{
    // User/Controller ID 映射表
    // Key: 物理控制器 Index
    // Value: 游戏内玩家 ID
    TMap<int32, int32> UserIndexMap;
    
    // 格斗游戏场景:
    // 手柄1 (Index=0) → Player 1 (ID=0)
    // 手柄3 (Index=2) → Player 2 (ID=1)
    // 允许任意手柄对应任意玩家槽位
};

代码修改情况

文件路径 修改类型 修改内容
Source/Runtime/Engine/Public/UEIEventHandler.h 新增文件 FUEIEventHandler 帧生命周期回调接口
Source/Runtime/Slate/Public/Framework/Application/UEISlateApplication.h 新增文件 FUEISlateApplication 控制器映射
Source/Runtime/Slate/Private/Framework/Application/UEISlateApplication.cpp 新增文件 实现