概述
通用游戏系统(GGS)的交互系统仅提供代码,本节提供集成交互系统的指引。
- 适用场景:专为复杂、高级交互功能设计,不适合简单单机游戏需求(如“玩家叠加后触发事件”)。
- 用途:支持多人交互、动态 UI 构建及网络复制,适用于需要复杂交互逻辑的项目。
启用插件
交互系统依赖以下插件:
- GameplayAbilities:所有交互行为封装在 GameplayAbility 中。
- SmartObject:可交互物体为 SmartObject,通过其定义配置交互入口规则(提示、输入等)。
- GameplayBehavior:每个交互入口通过 GameplayBehavior 定义触发行为,GameplayAbility 通过其赋予并触发。
- GenericGameSystem:本插件,负责发现交互对象、维护潜在交互对象列表、构建供 GGS UI 系统使用的交互选项列表,并管理交互的开始和结束。
前提:需对上述系统有基本了解。
关系图
下图阐述交互系统、GameplayAbility、智能对象及 UI 之间的关系:

注意
别被吓到,困难的部分已经实现。经过设置后,你只需要关心如何配置具体的可交互Actor,以及通过GA编写具体的交互逻辑(用脚踢开门,或者用钥匙开门)。
交互系统组件
所有主动交互的玩家需在 Pawn 上添加 GGS_InteractionSystemComponent。

该组件功能:
- 维护潜在交互对象的引用、当前选中目标及交互对象总数,支持网络复制。
- 通过 DefaultRequestFilter 指定搜索的可交互对象类型(可选,视实现方式而定)。
- 仅维护状态,通过事件通知外部状态变化。
- 根据状态变化,通过交互接口通知当前可交互对象。
主交互技能
需创建继承自 GGS_GameplayAbility_Interaction 的 GameplayAbility。
该技能:
- 作为玩家、交互系统和 UI 之间的通信桥梁。
- ReplicationPolicy 设为 Replicate,支持 RPC 通信。
- 服务端处理交互对象搜索和交互执行。
- 客户端负责创建交互 UI 及与其通信。
案例:
Loading Blueprint
Initializing BlueprintUE renderer...
交互对象的搜索和选择
案例中使用 UE5 的 GameplayTargetingSystem 搜索并排序目标,将结果 Actors 传递给交互系统组件。
其他方式:
- 基于玩家相机镜头选择。
- 由可交互 Actor 主动加入潜在交互列表。
构建 UI
最简单通用的方式是构建交互选项列表 UI,关键功能:
- 根据交互系统当前选中的交互对象选项列表,生成一组按钮。
- 根据智能对象槽是否可用,按钮相应禁用或隐藏。
- 按钮点击时通过 Index 通知交互技能以启动交互。
- 可通知交互系统在潜在交互对象间切换。
案例:

参考蓝图:
Loading Blueprint
Initializing BlueprintUE renderer...
刷新选项:
Loading Blueprint
Initializing BlueprintUE renderer...
此案例可在我的其他付费系统配套项目中找到。
可交互接口
若希望可交互 Actor 响应交互事件,可实现 GGS_InteractableInterface。
案例:通用库存系统中商人的交互接口实现。

Loading Blueprint
Initializing BlueprintUE renderer...
