游戏效果上下文

本文介绍Gameplay Ability System中的游戏效果上下文的用法,以及如何自定义上下文数据。

Cover.GGA
罗传月武(YueWu)

作者

罗传月武(YueWu)

专注游戏开发和Web技术。

创建时间: 2025年11月25日更新时间: 2026年9月15日

目录

概述

本文介绍Gameplay Ability System中的游戏效果上下文的用法,以及如何自定义上下文数据。

游戏效果

根据GASDocumentation,游戏效果上下文 是GAS中的一个特殊结构体,用于在GAS的各个应用流程(MMC/Execution,AttributeSets以及GameplayCues)中传递相关的上下文数据,

同时,也可以通过C++自定义该结构体,以添加自定义数据。

由于自定义游戏效果上下文需要强制使用C++,这位蓝图开发者在利用GAS实现高级特性时,带来了诸多不便!

因此,GGA提供了更优秀的解决方案,即游戏效果上下文数据系统。

上下文数据系统

GGA提供一个自定义的上下文结构体:GGA_GameplayEffectContext,其内部包含一组InstancedStruct结构体,允许你动态添加/移除任意数据到其中, 这些数据可以理解为“上下文数据”。

同时GGA提供了简单的API可以通过蓝图或者C++,获取上下文数据,或对其进行修改。

下图是使用这些API的案例:

游戏效果.上下文.数据系统

注意

要使用上下文数据系统,你需要在项目设置->GameplayAbilitiesSettings->AbilitySystemGlobalsClass中选择GGA_AbilitySystemGlobals。

最佳实践

你可以使用任意蓝图/C++结构体作为上下文数据,然而。为了让这些数据能够正常地进行网络序列化,结构体内的字段类型本身必须支持网络序列化。

同时,我推荐采用以ContextPayload_XXX形式为你的上下文数据的结构体类型命名。

在我的战斗系统中,我采用FGCS_ContextPayload_Combat来存储所有与战斗相关的上下文数据。