aura:学习大纲


能帮到你的话,就给个赞吧 😘


文章目录

前置知识

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是否正确

### 实践记录:
- 成功创建了自定义技能
- 需要改进:添加更好的错误处理

5.常见学习陷阱和解决方案

陷阱1:GAS概念太多,无从下手

解决方案

只关注一个核心流程(如技能激活)
忽略网络同步等高级功能,先做单人版本
使用大量日志输出,跟踪执行流程

陷阱2:编译错误

解决方案

清理项目
1. 删除 Intermediate/、Saved/、Binaries/ 文件夹
2. 右键 .uproject → Generate Visual Studio project files
3. 重新编译
常见问题
缺少模块依赖:检查 .Build.cs 文件
头文件错误:检查 #include 路径

陷阱3:不理解网络复制

解决方案

1.先学习单机版本
2.查看 UE 官方文档的 Network Compendium
3.使用 Unreal Insights 查看网络流量

6. 学习资源推荐

必看资料

1.官方文档

2.视频教程

GAS Companion 系列视频
Unreal Engine 的 GAS 官方教程

3.参考书籍:《Inside UE4》中关于Gameplay框架的章节

社区资源

Unreal Slackers Discord 的 #gameplay-ability-system 频道

知乎、B站上的中文 GAS 教程

7. 学习验收标准

初级(完成前两周)

理解 GAS 的基本组件和工作流程

能创建自定义的技能和效果

能实现基本的属性系统

中级(完成所有阶段)

能实现复杂的技能交互

理解网络同步机制

能调试 GAS 相关问题

高级(完成实践项目)

能设计完整的技能系统架构

能优化 GAS 性能

能扩展 GAS 功能

学习时间估计

快速学习:2-3周(每天3-4小时)

深入学习:1-2个月(每天2-3小时)

掌握并应用:3个月以上(包括实践项目)

关键建议

1.不要一次性阅读所有代码,按模块逐步学习

2.边学边实践,每学一个功能就动手实现

3.保持问题导向,遇到问题先尝试解决,再查看源码

4.参与社区讨论,分享你的学习心得

这个项目是学习 UE GAS 的优秀资源,按这个计划系统学习,你将在 1-2 个月内掌握 GAS 的核心应用。祝你学习顺利!

相关推荐
许强0xq22 天前
Q10: 对于地址白名单,使用 mapping 还是 array 更好?为什么?
面试·职场和发展·web3·solidity·evm·gas
小码闭眼ctrv2 个月前
gas 优化
区块链·solidity·gas
开发游戏的老王5 个月前
[BUG]关于UE5.6编译时出现“Microsoft.MakeFile.Targets(44,5): Error MSB3073”问题的解决
c++·ue5·bug·虚幻·虚幻5·gas