Community Tutorial: UE5 GAS完全入门指南|从基本应用到源码深入实战(一.基本应用)

本文面向已掌握 UE 基础 C++、正准备深入 Gameplay Ability System(GAS)的开发者。

为什么写这篇教程
半年前我也曾被 UE 的反射、GC、容器搞得头大;走完 C++ → UE 基础 → 小型 Demo 的闭环后,我直接切入 GAS。虽然陡峭,但回头看来,这是成长最快的一条路径。因此想把踩过的坑、验证过的方案一次性整理出来,帮助后来者少走弯路。

你将获得什么

GAS 核心概念与适用场景
官方文档的“正确打开方式”
用 C++ 扩展 GAS 的实战案例(含未暴露给蓝图的源码细节)
蓝图与 C++ 协同的最佳实践
阅读路线
概念 → 模块拆解 → 源码走读 → 最小可运行 Demo → 常见问题速查表

如果你已准备好源码级调试环境,让我们直接开始。

https://dev.epicgames.com/community/learning/tutorials/y033/unreal-engine-ue5-gas

现在有点问题,最基本应用没有完全写完,请见谅一下。正在火速加更!!!

2 Likes

感谢教程,很有帮助

1 Like

借楼问一下,属性集里直接用SetXXX()修改属性值和使用ASC->ApplyModToAttribute的 EGameplayModOp::Override模式有什么区别吗?

期末考试去了,暂时到1月7日之前不更新,见谅,目前那部分有问题的,我批注了一下,大家自己看着提示尝试改一下,不好意思

emm,表现上可能差不多。但是通过源码分析:AttributeSet里面关于那个Set….利用用了ASC的SetNumericAttributeBase函数,该函数里用的是ActiveGameplayEffects.SetAttributeBaseValue(Attribute, NewFloatValue),然后调用了PreAttributeBaseChange,然后开始变化。

而ASC里面的ApplyModeToAttribute里面也调用了SetAttributeBaseValue方法,不过ApplyModeToAttribute在调用改方法之前有一个float NewBase = FAggregator::StaticExecModOnBaseValue(CurrentBase, ModifierOp, ModifierMagnitude),通过该函数来判断我们该属性的新值,然后才调用SetAttributeBaseValue,把属性值改为那个新值。

所以,一个是直接覆盖。一个是进行了判断后才改变值。还是有所区别的

我跟随文档教程做完了UE5 GAS完全入门指南|从基本应用到源码深入实战(一.基本应用) | Community tutorial unit可以正常显示ASC的debug信息,但我无法控制角色移动或者控制相机。我跟着文档做到这一步时一直都是用的模板的角色,检查过GameMode,Controller,Input的设置发现都没有问题,enhanced input插件也是开启的….我现在在寻求ai进行帮助,请问楼主知道是怎么回事吗