如何集成

本文讲述如何集成通用游戏系统(GGS)的交互系统。

Cover.GGS
罗传月武(YueWu)

作者

罗传月武(YueWu)

专注游戏开发和Web技术。

创建时间: 2025年5月16日更新时间: 2026年9月15日

目录

概述

通用游戏系统(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 通知交互技能以启动交互。
  • 可通知交互系统在潜在交互对象间切换。

案例:

交互系统.演示UI

参考蓝图:

Loading Blueprint

Initializing BlueprintUE renderer...

刷新选项:

Loading Blueprint

Initializing BlueprintUE renderer...

此案例可在我的其他付费系统配套项目中找到。

可交互接口

若希望可交互 Actor 响应交互事件,可实现 GGS_InteractableInterface。
案例:通用库存系统中商人的交互接口实现。

交互系统.接口

Loading Blueprint

Initializing BlueprintUE renderer...