能帮到你的话,就给个赞吧 😘
文章目录
- 前置知识
-
- 1.ue5基础
-
- 基本的Actor、Component概念
- [UMG UI系统基础](#UMG UI系统基础)
- 蓝图与C++交互
- 2.GAS核心概念
-
- [Gameplay Ability System官方文档快速浏览](#Gameplay Ability System官方文档快速浏览)
- 理解ASC、GA、GE、AttributeSet等基本组件
- 3.环境配置
-
- [1.获取项目:git clone https://github.com/DruidMech/GameplayAbilitySystem_Aura.git](#1.获取项目:git clone https://github.com/DruidMech/GameplayAbilitySystem_Aura.git)
- 2.确保安装
-
- [Unreal Engine 5.0+](#Unreal Engine 5.0+)
- [Visual Studio 2022](#Visual Studio 2022)
- [Git LFS(项目可能包含大文件)](#Git LFS(项目可能包含大文件))
- 0.项目概览(2-3天):理解项目架构,不深入代码
- 1.核心模块学习(7-10天):掌握GAS基础
-
- [1.Ability System Component](#1.Ability System Component)
-
- 文件:AuraAbilitySystemComponent.h/.cpp
- 重点理解
-
- [1.GiveAbility() - 如何赋予角色技能](#1.GiveAbility() - 如何赋予角色技能)
- [2.TryActivateAbility() - 技能激活流程](#2.TryActivateAbility() - 技能激活流程)
- [3.InputPressed/Released - 输入绑定](#3.InputPressed/Released - 输入绑定)
- [2.技能基类 :GA_AuraBase](#2.技能基类 :GA_AuraBase)
-
- 文件:GA_AuraBase.h/.cpp
- 重点理解:技能生命周期
-
- [1.ActivateAbility() - 技能激活](#1.ActivateAbility() - 技能激活)
- [2.EndAbility() - 技能结束](#2.EndAbility() - 技能结束)
- [3.CancelAbility() - 技能取消](#3.CancelAbility() - 技能取消)
- 4.技能成本消耗和冷却逻辑
- [3.效果系统 :GE_AuraBase](#3.效果系统 :GE_AuraBase)
-
- 文件:GE_AuraBase.h/.cpp
- 重点理解
-
- [1.Instant Gameplay Effect - 即时效果](#1.Instant Gameplay Effect - 即时效果)
- [2.Duration Gameplay Effect - 持续效果](#2.Duration Gameplay Effect - 持续效果)
- [3.Periodic Gameplay Effect - 周期性效果](#3.Periodic Gameplay Effect - 周期性效果)
- [4.Modifier Magnitude Calculation - 效果强度计算](#4.Modifier Magnitude Calculation - 效果强度计算)
- [4.属性系统 :AuraAttributeSet](#4.属性系统 :AuraAttributeSet)
-
- 文件:AuraAttributeSet.h/.cpp
- 重点理解
-
- [1.Pre/PostAttributeChange() - 属性变化前后处理](#1.Pre/PostAttributeChange() - 属性变化前后处理)
- [2.Pre/PostGameplayEffectExecute() - 效果执行前后](#2.Pre/PostGameplayEffectExecute() - 效果执行前后)
- 3.属性限制逻辑(如血量不超最大值)
- 整合测试
- 2.高级功能(5-7天)
-
- 1.伤害计算系统
- 2.UI集成
-
- [文件:AuraHUD.cpp, AuraWidgetController.h/.cpp](#文件:AuraHUD.cpp, AuraWidgetController.h/.cpp)
- 重点理解
-
- [1.Widget Controller 模式](#1.Widget Controller 模式)
- 2.属性变化绑定到UI
- 3.技能冷却UI更新
- 测试:添加一个新的状态显示UI
- 3.多人网络同步
-
- 重点理解
-
- [1.网络复制标记:ReplicatedUsing, Replicated](#1.网络复制标记:ReplicatedUsing, Replicated)
- [2.RPC函数:Server, Client, NetMulticast](#2.RPC函数:Server, Client, NetMulticast)
- 3.预测系统
- 测试:在本地服务器测试网络同步
- 4.调试和优化
-
- [1.使用 `ABILITY_LOG()` 查看技能日志](#1.使用
ABILITY_LOG()查看技能日志) - [2.Gameplay Debugger 的使用](#2.Gameplay Debugger 的使用)
- 3.性能分析:查看技能的内存使用
- [1.使用 `ABILITY_LOG()` 查看技能日志](#1.使用
- 3.项目实践
-
- 创建完整的技能:从零创建一个类似"治疗术"的技能
- 扩展练习
-
- 技能连招系统
-
- 连续使用技能A后,技能B增强
- [使用Gameplay Tags追踪状态](#使用Gameplay Tags追踪状态)
- 被动技能系统
- 技能树系统
- 4.工具和技巧
-
- 调试工具
-
- 1.控制台命令
-
- [showdebug abilitysystem:显示GAS调试信息](#showdebug abilitysystem:显示GAS调试信息)
- 2.可视化调试
-
- [使用Gameplay Abilities Debugger插件](#使用Gameplay Abilities Debugger插件)
- [在编辑器中查看Active Gameplay Effects](#在编辑器中查看Active Gameplay Effects)
- [3.日志输出:ABILITY_LOG(LogTemp, Warning, TEXT("技能 %s 激活"), *GetName());](#3.日志输出:ABILITY_LOG(LogTemp, Warning, TEXT("技能 %s 激活"), *GetName());)
- 学习笔记模板
-
- [[日期] 学习内容:技能激活流程](#[日期] 学习内容:技能激活流程)
-
- 核心流程
-
- [1.输入事件 → InputComponent → AbilitySystemComponent](#1.输入事件 → InputComponent → AbilitySystemComponent)
- [2. ASC查找对应AbilitySpec](#2. ASC查找对应AbilitySpec)
- [3. 调用TryActivateAbility()](#3. 调用TryActivateAbility())
- [4. 执行CanActivateAbility()检查](#4. 执行CanActivateAbility()检查)
- [5. 调用GA::ActivateAbility()](#5. 调用GA::ActivateAbility())
- 关键代码位置
- 遇到的问题
-
- [Q: 技能为什么没有激活?:检查技能是否被赋予,输入Tag是否正确](#Q: 技能为什么没有激活?:检查技能是否被赋予,输入Tag是否正确)
- 实践记录
- 5.常见学习陷阱和解决方案
-
- 陷阱1:GAS概念太多,无从下手
- 陷阱2:编译错误
-
- 解决方案
-
- 清理项目
-
- [1. 删除 Intermediate/、Saved/、Binaries/ 文件夹](#1. 删除 Intermediate/、Saved/、Binaries/ 文件夹)
- [2. 右键 .uproject → Generate Visual Studio project files](#2. 右键 .uproject → Generate Visual Studio project files)
- [3. 重新编译](#3. 重新编译)
- 常见问题
-
- [缺少模块依赖:检查 .Build.cs 文件](#缺少模块依赖:检查 .Build.cs 文件)
- [头文件错误:检查 #include 路径](#include 路径)
- 陷阱3:不理解网络复制
- [6. 学习资源推荐](#6. 学习资源推荐)
-
- 必看资料
-
- 1.[官方文档](https://dev.epicgames.com/documentation/en-us/unreal-engine/gameplay-ability-system-for-unreal-engine?application_version=5.0)
- 2.视频教程
-
- [GAS Companion 系列视频](#GAS Companion 系列视频)
- [Unreal Engine 的 GAS 官方教程](#Unreal Engine 的 GAS 官方教程)
- [3.参考书籍:《Inside UE4》中关于Gameplay框架的章节](#3.参考书籍:《Inside UE4》中关于Gameplay框架的章节)
- 社区资源
-
- [Unreal Slackers Discord 的 #gameplay-ability-system 频道](#gameplay-ability-system 频道)
- [知乎、B站上的中文 GAS 教程](#知乎、B站上的中文 GAS 教程)
- [7. 学习验收标准](#7. 学习验收标准)
-
- 初级(完成前两周)
-
- [理解 GAS 的基本组件和工作流程](#理解 GAS 的基本组件和工作流程)
- 能创建自定义的技能和效果
- 能实现基本的属性系统
- 中级(完成所有阶段)
-
- 能实现复杂的技能交互
- 理解网络同步机制
- [能调试 GAS 相关问题](#能调试 GAS 相关问题)
- 高级(完成实践项目)
-
- 能设计完整的技能系统架构
- [能优化 GAS 性能](#能优化 GAS 性能)
- [能扩展 GAS 功能](#能扩展 GAS 功能)
- 学习时间估计
-
- 快速学习:2-3周(每天3-4小时)
- 深入学习:1-2个月(每天2-3小时)
- 掌握并应用:3个月以上(包括实践项目)
- 关键建议
- [这个项目是学习 UE GAS 的优秀资源,按这个计划系统学习,你将在 1-2 个月内掌握 GAS 的核心应用。祝你学习顺利!](#这个项目是学习 UE GAS 的优秀资源,按这个计划系统学习,你将在 1-2 个月内掌握 GAS 的核心应用。祝你学习顺利!)
前置知识
1.ue5基础
基本的Actor、Component概念
UMG UI系统基础
蓝图与C++交互
2.GAS核心概念
Gameplay Ability System官方文档快速浏览
理解ASC、GA、GE、AttributeSet等基本组件
3.环境配置
1.获取项目:git clone https://github.com/DruidMech/GameplayAbilitySystem_Aura.git
2.确保安装
Unreal Engine 5.0+
Visual Studio 2022
Git LFS(项目可能包含大文件)
0.项目概览(2-3天):理解项目架构,不深入代码
1.运行项目
编译并运行,体验所有功能
测试每个技能,查看UI反馈
2.资产浏览
查看 Content/Blueprints/Abilities/ 下的技能配置
查看 Content/Data/ 中的数据表
查看 Content/UI/ 中的界面元素
3.绘制架构

cpp
graph TD
A[玩家输入] --> B[AuraInputComponent]
B --> C[AuraAbilitySystemComponent]
C --> D[激活技能]
D --> E[GA_AuraBase]
E --> F[应用效果 GE_AuraBase]
F --> G[修改属性 AuraAttributeSet]
G --> H[更新UI]
1.核心模块学习(7-10天):掌握GAS基础
1.Ability System Component
文件:AuraAbilitySystemComponent.h/.cpp
重点理解
1.GiveAbility() - 如何赋予角色技能
2.TryActivateAbility() - 技能激活流程
3.InputPressed/Released - 输入绑定
2.技能基类 :GA_AuraBase
文件:GA_AuraBase.h/.cpp
重点理解:技能生命周期
1.ActivateAbility() - 技能激活
2.EndAbility() - 技能结束
3.CancelAbility() - 技能取消
4.技能成本消耗和冷却逻辑
3.效果系统 :GE_AuraBase
文件:GE_AuraBase.h/.cpp
重点理解
1.Instant Gameplay Effect - 即时效果
2.Duration Gameplay Effect - 持续效果
3.Periodic Gameplay Effect - 周期性效果
4.Modifier Magnitude Calculation - 效果强度计算
4.属性系统 :AuraAttributeSet
文件:AuraAttributeSet.h/.cpp
重点理解
1.Pre/PostAttributeChange() - 属性变化前后处理
2.Pre/PostGameplayEffectExecute() - 效果执行前后
3.属性限制逻辑(如血量不超最大值)
整合测试
创建一个简单的自定义技能
创建一个新的属性
创建一个UI显示新属性
2.高级功能(5-7天)
1.伤害计算系统
重点理解
1.伤害类型分类
2.抗性计算
3.暴击和闪避系统
4.伤害数值显示
测试:添加一个新的伤害类型(如火焰伤害)
2.UI集成
文件:AuraHUD.cpp, AuraWidgetController.h/.cpp
重点理解
1.Widget Controller 模式
2.属性变化绑定到UI
3.技能冷却UI更新
测试:添加一个新的状态显示UI
3.多人网络同步
重点理解
1.网络复制标记:ReplicatedUsing, Replicated
2.RPC函数:Server, Client, NetMulticast
3.预测系统
测试:在本地服务器测试网络同步
4.调试和优化
1.使用 ABILITY_LOG() 查看技能日志
2.Gameplay Debugger 的使用
3.性能分析:查看技能的内存使用
3.项目实践
创建完整的技能:从零创建一个类似"治疗术"的技能
1.创建新的GameplayAbility类:GA_Heal
2.创建GameplayEffect:GE_HealEffect(治疗量计算)
3.创建输入配置:绑定到某个按键
4.创建UI:显示治疗技能图标和冷却
5.添加音效和粒子效果
6.测试多人同步
扩展练习
技能连招系统
连续使用技能A后,技能B增强
使用Gameplay Tags追踪状态
被动技能系统
根据属性自动触发的技能
叠加型被动(如每次攻击增加攻击力)
技能树系统
可升级的技能
技能之间的依赖关系
4.工具和技巧
调试工具
1.控制台命令
showdebug abilitysystem:显示GAS调试信息
2.可视化调试
使用Gameplay Abilities Debugger插件
在编辑器中查看Active Gameplay Effects
3.日志输出:ABILITY_LOG(LogTemp, Warning, TEXT("技能 %s 激活"), *GetName());
学习笔记模板
[日期] 学习内容:技能激活流程
核心流程
1.输入事件 → InputComponent → AbilitySystemComponent
2. ASC查找对应AbilitySpec
3. 调用TryActivateAbility()
4. 执行CanActivateAbility()检查
5. 调用GA::ActivateAbility()
关键代码位置
AuraInputComponent::SetupInput()
UAuraAbilitySystemComponent::AbilitySpecInputPressed()
UGameplayAbility::Activate()
遇到的问题
Q: 技能为什么没有激活?:检查技能是否被赋予,输入Tag是否正确
实践记录
成功创建了自定义技能
需要改进:添加更好的错误处理
cpp
## [日期] 学习内容:技能激活流程
### 核心流程:
1. 输入事件 → InputComponent → AbilitySystemComponent
2. ASC查找对应AbilitySpec
3. 调用TryActivateAbility()
4. 执行CanActivateAbility()检查
5. 调用GA::ActivateAbility()
### 关键代码位置:
- AuraInputComponent::SetupInput()
- UAuraAbilitySystemComponent::AbilitySpecInputPressed()
- UGameplayAbility::Activate()
### 遇到的问题:
1. Q: 技能为什么没有激活?
A: 检查技能是否被赋予,输入Tag是否正确
### 实践记录:
- 成功创建了自定义技能
- 需要改进:添加更好的错误处理