当前位置: 首页 > news >正文

网站建设用途网页制作教程视频 网盘

网站建设用途,网页制作教程视频 网盘,盐山县招聘网站建设,Python用数据库做网站文章目录前言一、Ability System 的核心组成二、UGameplayAbility:技能定义类三、技能的注册与初始化机制四、技能激活执行流程(详细调用链)五、FGameplayAbilitySpec:技能运行体六、技能输入绑定与触发原理七、冷却 & 消耗机…

文章目录

  • 前言
  • 一、Ability System 的核心组成
  • 二、UGameplayAbility:技能定义类
  • 三、技能的注册与初始化机制
  • 四、技能激活执行流程(详细调用链)
  • 五、FGameplayAbilitySpec:技能运行体
  • 六、技能输入绑定与触发原理
  • 七、冷却 & 消耗机制
  • 八、技能任务(Ability Task)机制
  • 九、网络同步原理
  • 十、技能中断与多技能管理机制
  • 十一、技能条件控制:标签、资源、状态
  • 十二、总结:Ability System 的核心价值
  • 示例:完整技能流程(如“火球术”)


前言

深入了解 Ability System(技能系统) 的实现原理,就从底层结构、执行流程、网络同步,到触发机制逐层拆解。这个系统是 GAS(Gameplay Ability System) 的核心,用于管理技能的激活、执行、冷却、条件判断、资源消耗等一整套流程。

一、Ability System 的核心组成

模块说明关键类
技能对象描述技能逻辑和行为UGameplayAbility
技能组件技能容器和调度器UAbilitySystemComponent (ASC)
技能上下文封装调用信息FGameplayAbilitySpec, FGameplayAbilityActorInfo
技能任务蓝图中组合行为UAbilityTask
技能标签控制是否可激活/中断等FGameplayTag, FGameplayTagContainer

二、UGameplayAbility:技能定义类

每一个技能都继承自 UGameplayAbility 类,你可以在其中定义:
技能类型(Instant / Duration / Channeling)
激活条件
技能行为(动画、GE 应用、移动等)

生命周期关键函数:

virtual void ActivateAbility(const FGameplayAbilitySpecHandle Handle,const FGameplayAbilityActorInfo* ActorInfo,const FGameplayAbilityActivationInfo ActivationInfo,const FGameplayEventData* TriggerEventData) override;virtual void EndAbility(...) override;
virtual void CancelAbility(...) override;

三、技能的注册与初始化机制

技能本身并不自动存在于角色身上,只有注册到 AbilitySystemComponent(ASC)中,才能使用。

添加技能流程:

FGameplayAbilitySpec Spec = FGameplayAbilitySpec(AbilityClass, Level, InputID);
ASC->GiveAbility(Spec);
ASC->InitAbilityActorInfo(OwnerActor, AvatarActor);
  1. 每个技能对应一个 FGameplayAbilitySpec
  2. ASC 会创建该技能类的实例,绑定输入等

四、技能激活执行流程(详细调用链)

激活流程概览(通过蓝图 or 代码):

↓ 玩家按键(Input)
↓ ASC 调用 TryActivateAbility()
↓ 检查:激活条件(如 Tag、资源)
↓ 调用 Ability->ActivateAbility()
↓ AbilityTask 执行实际行为
↓ ApplyGE、WaitTarget、WaitGameplayEvent 等
↓ EndAbility() or CancelAbility()

五、FGameplayAbilitySpec:技能运行体

它记录每个技能的运行状态,包括:

struct FGameplayAbilitySpec {UGameplayAbility* Ability;     // 技能对象int32 Level;bool bIsActive;FGameplayAbilityActivationInfo ActivationInfo;FGameplayAbilitySpecHandle Handle;TArray<UGameplayAbility*> ReplicatedInstances; // 网络同步用
};

一个技能可以有多个激活实例(如 DOT 技能多段激活)

六、技能输入绑定与触发原理

在 GAS 中,技能并不会直接响应输入,而是通过 InputID 实现:

FGameplayAbilitySpec Spec(MyAbility, 1, InputID);
ASC->GiveAbility(Spec);

然后再调用:

ASC->AbilityLocalInputPressed(InputID);
ASC->TryActivateAbilityByClass(MyAbilityClass);

或者你可以使用 Enhanced Input 系统绑定并传递到 ASC。

七、冷却 & 消耗机制

GAS 并不会自动实现冷却或消耗,但它提供了强大的数据驱动方式支持这两者:

方法一:使用 GE 管理冷却时间

Ability->CooldownGameplayEffectClass = UMyCooldownGE;

这个 GE 会:

  1. 授予角色 Cooldown.X 标签
  2. 设置持续时间(冷却时间)
  3. 在标签存在期间,禁止技能再次激活

方法二:使用 GE 管理消耗(蓝、体力)

Ability->CostGameplayEffectClass = UMyCostGE;

GE 的 Modifier 会减少 Mana、Stamina 属性

八、技能任务(Ability Task)机制

在 Blueprint 中你通过 Ability Task 来拼接技能逻辑,如:

WaitTargetData
↓
ApplyGameplayEffectToTarget
↓
WaitGameplayEvent
↓
EndAbility

任务类都继承自 UAbilityTask,例如:

UAbilityTask_WaitGameplayEvent
UAbilityTask_WaitDelay
UAbilityTask_ApplyRootMotion

你也可以自定义 Task,实现定制的技能行为流程。

九、网络同步原理

GAS 是高度权威服务器驱动,技能同步由服务器控制,客户端只能请求。

流程概览:

阶段处理方式
激活请求客户端调用 ServerTryActivateAbility()
技能执行服务端执行 ActivateAbility(),广播 GE、动画等
结果同步ASC 同步 GE、属性变化、状态标签等到客户端
任务通知AbilityTask 自动使用 RPC 或事件广播通知客户端完成状态

例如,客户端看到技能动画,是服务器同步结果,而非本地执行。

十、技能中断与多技能管理机制

GAS 支持多技能并发、互斥、可打断机制:

技能互斥机制:

ActivationBlockedTags = Status.Stunned
CancelAbilitiesWithTag = Ability.Magic

中断机制:

Ability->EndAbility(CurrentSpecHandle, ActorInfo, ActivationInfo, true, false);

当 GE 加上一个如 Status.Stunned 的标签时,系统会自动取消与之冲突的技能。

十一、技能条件控制:标签、资源、状态

GAS 的技能激活控制非常精细化:

类型控制手段
状态阻断ActivationBlockedTags
状态需求ActivationRequiredTags
属性需求在 CheckCost() 中判断属性值(如蓝是否足够)
自定义逻辑重写 CanActivateAbility() 进行复杂条件

十二、总结:Ability System 的核心价值

模块功能优点
UGameplayAbility技能逻辑定义支持蓝图 + C++
FGameplayAbilitySpec技能状态跟踪可动态添加、修改等级
ASC技能执行入口支持网络同步、GE 应用
AbilityTask技能逻辑拼装像写脚本一样设计技能
GE + Tag数据驱动限制条件易维护、组合灵活

示例:完整技能流程(如“火球术”)

  1. 玩家按下 Q → 调用 ASC->TryActivateAbility
  2. 系统检查:是否沉默?是否在冷却?
  3. 激活后播放动画 → 发射子弹
  4. 命中目标 → ApplyGameplayEffectToTarget(造成伤害)
  5. 给自己添加 Cooldown.Fireball GE(冷却)
  6. 技能生命周期结束
http://www.dtcms.com/a/521371.html

相关文章:

  • 网站建设学习视频中国50大电商排名
  • 虚幻引擎5 GAS开发俯视角RPG游戏 P06-14 属性菜单 - 文本值行
  • 【浏览器】前端页面禁用浏览器复制的方案
  • 外国人做的汉子网站网站建设合同应注意
  • 怎样把录的视频做一下传到网站四川省住房建设厅官网
  • 网站手机端排名怎么做学校学不到网站建设
  • windows 安装 Redis
  • 阿里云网站建设方案书一定要嘛更换wordpress库
  • h5游戏免费下载:疯狂猜水果
  • 网页制作素材网站网站快速备案通道
  • Spring Boot JMX与Jolokia监控实战
  • 安康做企业网站的百度推广有哪些推广方式
  • 利用模板如何制作网站做的网站 v2ex
  • wordpress主题教程seo 优化顾问
  • 给网站怎么做tag标签如何用手机做音乐网站
  • 博客类网站源码番禺建设局网站首页
  • a5创业网站建设微信小程序如何生成二维码
  • 【Linux入门】常用工具:yum、vim
  • 专注网站建设公司名称大全免费取名
  • 如何将MIB库文件转换为ZABBIX xml模板
  • 音频调试技巧分享:mediametrics::LogItem相关日志如何查看?
  • 手淘网站建设需求分析做qq链接的网站
  • 进口倾角传感器选择与优质厂家推荐双轴倾角传感器在物联网应用中的核心价值
  • 环保厅网站建设的必要性做盗版电影网站违法吗
  • 做网站的公司 经营范围主页设计
  • 东莞网上销售网站建设网站建设经
  • 从零搭建vsftpd服务器:避坑指南+实战解决方案
  • Linux 解压安装(安装tomcat)
  • 密云网站开发公司沧州做网站公司
  • 如何开发移动网站长沙关键词优化报价