29. UE5 RPG应用GamplayAbility
前面几篇文章,总算把GE给更新完了,GE的基础应用也算讲清楚了。接下来,我们将更新GA的相应的课程了,首先,这一篇先对GA做一个简单的介绍,然后实现一下如何实现给角色应用一个GA。
简介
GamplayAbility 简称 GA,是UE引擎里的GAS内的功能组件,它的主要功能包括技能冷却时间(CD)和技能消耗的管理,同时也支持网络同步和实例支持。开发者可以在ActivateAbility事件中编写相关的技能逻辑,如角色动作、粒子效果以及角色数值的变动。根据技能是否施展成功,可以调用CommitAbility()或EndAbility()来结束技能。
GameplayAbility在UE中的类名为UGameplayAbility,它继承于UObject和IGameplayTaskOwnerInterface。UObject是所有UE对象的基类,而IGameplayTaskOwnerInterface是一个抽象类,代表玩法任务所有者接口。UGameplayAbility通过其丰富的继承关系和函数,使得开发者能够灵活地创建和管理游戏中的技能系统。
GA类主要定义攻击或者能力,它必须首先被应用给ASC,我们将在服务器上执行此操作,然后将 GA的spec复制到本地。在使用时,必须将其激活(Activated,如果只应用,不激活,将不起效果),它可以异步运行,就是可以同时触发多个技能,正常技能它是不能够异步的,我们需要使用Ability Task去实现技能异步。
创建GA
GA的配置修改是需要在蓝图中进行的,我们可以直接通过创建蓝图选择GameplayAbility去创建
但是考虑到后续要为GA增加新的功能,我们先通过GameplayAbility创建一个c++类,然后将其命名为GameplayAbilityBase,当做技能的基类,用于以后的扩展。
打开代码,我们首先找到ASC的基类,在基类增加一个函数,用于应用技能,参数传入一个技能类的数组
void AddCharacterAbilities(const TArray<TSubclassOf<UGameplayAbility>>& StartupAbilities);
在函数实现这里,遍历传入的数组,通过参数实例一个spec,并应用,这里为了方便测试,使用GiveAbilityAndActivateOnce函数应用,并直接激活。
void UAbilitySystemComponentBase::AddCharacterAbilities(const TArray<TSubclassOf<UGameplayAbility>>& StartupAbilities)
{for(TSubclassOf<UGameplayAbility> AbilityClass : StartupAbilities){FGameplayAbilitySpec AbilitySpec = FGameplayAbilitySpec(AbilityClass, 1);//GiveAbility(AbilitySpec); //只应用不激活GiveAbilityAndActivateOnce(AbilitySpec); //应用技能并激活一次}
}
找到角色的基础类CharacterBase,添加一个私有属性,作为角色初始的技能设置。
private:UPROPERTY(EditAnywhere, Category="Attributes")TArray<TSubclassOf<UGameplayAbility>> StartupAbilities; //角色初始技能设置
在函数实现这里,将ASC类型转换为我们创建的ASC基类,并调用上面添加技能的函数
void ACharacterBase::AddCharacterAbilities() const
{UAbilitySystemComponentBase* ASC = CastChecked<UAbilitySystemComponentBase>(GetAbilitySystemComponent());if(!HasAuthority()) return; //查询是否拥有网络权限,应用技能需要添加给服务器ASC->AddCharacterAbilities(StartupAbilities);
}
这里,技能的设置,技能的应用函数就已经实现完毕,我们现在只需要在初始化角色的时候调用角色基类身上的AddCharacterAbilities函数,即可实现技能的应用。
在英雄角色类里面,服务器端初始化函数为PossessedBy,我们在内部初始化ASC后,调用初始化技能即可。
void AHeroCharacter::PossessedBy(AController* NewController)
{Super::PossessedBy(NewController);//初始化ASC的OwnerActor和AvatarActorInitAbilityActorInfo();//设置OwnerActor的ControllerSetOwner(NewController);//初始化角色技能AddCharacterAbilities();
}
测试
功能实现了,接下来,我们要实现对功能的测试,首先打开UE,创建一个技能蓝图,基于我们之前创建的技能类
内部默认有两个函数回调,一个是技能被激活后的回调,我们可以在后面计算消耗,播放动画,以及做一些逻辑性的处理
另一个回调事件是技能结束回调,可以在技能结束时需要编辑一些逻辑处理
技能的结束需要我们手动去处理,在内部调用,是用commitAbility节点(计算技能消耗是否达标,不达标自动结束技能)EndAbility节点(结束技能)或者在外部取消技能
一下是我们实现的一个技能测试蓝图,延迟一秒结束技能,看是否正常打印
打开英雄角色蓝图,发现自定义属性这里多了一项设置技能的数组参数,将我们创建的技能蓝图设置上去
接着运行,看是否正常打印,如果正常打印,那证明技能使用测试通过。
相关文章:
29. UE5 RPG应用GamplayAbility
前面几篇文章,总算把GE给更新完了,GE的基础应用也算讲清楚了。接下来,我们将更新GA的相应的课程了,首先,这一篇先对GA做一个简单的介绍,然后实现一下如何实现给角色应用一个GA。 简介 GamplayAbility 简称…...
http和https的区别!
HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSLHTTP) 数据传输过程是加密的,安全性较好。 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) …...
使用AOP实现打印日志
首先创建annotation.SystemLog类: package com.gjh.annotation;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;Target(ElementType.METHOD…...
2024年新算法-冠豪猪优化算法(CPO),CPO-RF-Adaboost,CPO优化随机森林RF-Adaboost回归预测-附代码
冠豪猪优化算法(CPO)是一种基于自然界中猪群觅食行为启发的优化算法。该算法模拟了猪群在寻找食物时的集群行为,通过一系列的迭代过程来优化目标函数,以寻找最优解。在这个算法中,猪被分为几个群体,每个群体…...
浅谈高阶智能驾驶-NOA领航辅助的技术与发展
浅谈高阶智能驾驶-NOA领航辅助的技术与发展 附赠自动驾驶学习资料和量产经验:链接 2019年在国内首次试驾特斯拉NOA领航辅助驾驶的时候,当时兴奋的觉得未来已来;2020年在试驾蔚来NOP领航辅助驾驶的时候,顿时不敢小看国内新势力了;现在如果哪家…...
大模型 智能体 智能玩具 智能音箱 构建教程 wukong-robot
视频演示 10:27 一、背景 继上文《ChatGPT+小爱音响能擦出什么火花?》可以看出大伙对AI+硬件的结合十分感兴趣,但上文是针对市场智能音响的AI植入,底层是通过轮询拦截,算是hack兼容,虽然官方有提供开发者接口,也免不了有许多局限性(比如得通过特定指令唤醒),不利于我…...
Clickhouse-表引擎探索之MergeTree
引言 前文曾说过,Clickhouse是一个强大的数据库Clickhouse-一个潜力无限的大数据分析数据库系统 其中一个强大的点就在于支持各类表引擎以用于不同的业务场景。 MergeTree MergeTree系列的引擎被设计用于插入极大量的数据到一张表当中。数据可以以数据片段的形式一…...
网络电视盒子哪个好?小编分享电视盒子品牌排行榜
电视盒子使用频率高,功能丰富,价格划算,是我们日常不可或缺的部分,小编经常会被问到与电视盒子相关的问题,考虑到很多朋友并不了解网络电视盒子哪个好,这次我来分享业内权威电视盒子品牌排行榜,…...
开源模型应用落地-baichuan2模型小试-入门篇(三)
一、前言 相信您已经学会了如何在Windows环境下以最低成本、无需GPU的情况下运行baichuan2大模型。现在,让我们进一步探索如何在Linux环境下,并且拥有GPU的情况下运行baichuan2大模型,以提升性能和效率。 二、术语 2.1. CentOS CentOS是一种基于Linux的自由开源操作…...
景联文科技高质量大模型训练数据汇总!
3月25日,2024年中国发展高层论坛年会上,国家数据局局长刘烈宏在“释放数据要素价值,助力可持续发展”的演讲中表示,中国10亿参数规模以上的大模型数量已超100个。 当前,国内AI大模型发展仍面临诸多困境。其中ÿ…...
【python】正则表达式
文章目录 正则表达式对象re.RegexObjectre.MatchObject符号说明匹配基础匹配?=、?<=、?!、?<!字符类re模块编译正则表达式compile 函数匹配字符串re.matchre.searchre.findall...
学习vue3第十二节(组件的使用与类型)
1、组件的作用用途 目的: 提高代码的复用度,和便于维护,通过封装将复杂的功能代码拆分为更小的模块,方便管理, 当我们需要实现相同的功能时,我们只需要复用已经封装好的组件,而不需要重新编写相…...
flume配置文件后不能跟注释!!
先总结:Flume配置文件后面,不能跟注释,可以单起一行写注释 报错代码: [ERROR - org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:158)] Unable to deliver event. Exception follows. org.apache.flume.EventDel…...
【docker】Dockerfile自定义镜像
📝个人主页:五敷有你 🔥系列专栏:中间件 ⛺️稳中求进,晒太阳 1.Dockerfile自定义镜像 常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。 而要自定义镜像,就…...
webpack项目打包console git分支、打包时间等信息 exec
相关链接 MDN toLocaleString child_process Node.js strftime 格式 代码 buildinfo.js const { execSync, exec } require("child_process"); // exec: 在 Windows 执行 bat 和 cmd 脚本// execSync 同步 // exec 异步// exec 使用方法 // exec(git show -s,…...
Linux centos7离线搭建FTP
1、下载、安装ftp 下载ftp安装包,可以从rpm下载站搜索合适的版本,使用wget命令下载。 wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/vsftpd-3.0.2-28.el7.x86_64.rpm 安装: rpm -ivh vsftpd-3.0.2-28.el7.x86_64.rpm 2…...
关于GPT-SoVITS语音合成的效果展示(西游之西天送葬团)
目录 使用效果总结合成效果展示 使用效果总结 使用的是2024年03月21日22点28分更新的版本。 使用起来很方便,从它“自带界面”这点就能看出,易于使用也是目的之一,而且从训练到推理的每个步骤都能在界面中完成。 集成了多个实用工具&#…...
如何安装OceanBase的OBD
选择一:借助 all-in-one 安装包安装 OBD(推荐) OceanBase 社区版的all-in-one安装包是一个集成了多种工具的一键式安装包。它包含了数据库软件本身,以及OBD、OBProxy、OBClient,自4.1版本起,还额外加入了O…...
Unity 读写Excel打包后无法运行可能的解决方案
读写Excel打包后无法运行可能的解决方案 💡.适用于NPOI、EPPlus。 💡.下载 资源包👈,解压后把dll放到Assets目录中再重新打包即可。...
算法沉淀 —— 深度搜索(dfs)
算法沉淀 —— 深度搜索(dfs) 一、计算布尔二叉树的值二、求根节点到叶节点数字之和三、二叉树剪枝四、验证二叉搜索树五、二叉搜索树中第K小的元素 一、计算布尔二叉树的值 【题目链接】:2331. 计算布尔二叉树的值 【题目】: …...
#设计模式#3.1用做松鼠桂鱼来理解抽象工厂(对象创建型模式)
概念:xx工厂,xx产品 区分 工厂是动作,产品是结果(菜品) 概念:抽象xx,具体xx 区分 抽象产品:“中式菜品” 具体产品:“麻婆豆腐”、“宫保鸡丁” 抽象工厂:“…...
adb基本命令
下载安装 adb 概述: ADB 全称为 Android Debug Bridge,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是 Android 设备。 下载地址: Windows版本:https://dl.google.com/android/repository/pl…...
小工具实战-Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密
小工具实战-Python实现小工具输出字符串大小写转换、字符串统计、编解码、MD5加密 学习建议字符串大小写转换实现思路部分代码 字符串统计实现思路部分代码: 字符串编解码实现思路部分代码 字符串MD5加密实现思路部分代码 小工具整体设计设计思路工具完整代码实现输…...
MySQL进阶-----索引的语法与SQL性能分析
目录 前言 一、索引语法 1.SQL语法 2.案例演示 二、SQL性能分析 三、慢查询日志 1.开启日志 2.测试样例 四、profile详情 1.开启profile 2.profile测试SQL语句 五、explain详情 1.语法结构 2.执行顺序示例(id) 3.执行性能示例(type) 前言 本…...
Ansible剧本playbooks详解
一、playbook简介 playbook是ansible用于配置,部署和管理托管主机剧本,通过playbook的详细描述,执行其中一系列tasks,playbook字面意思是剧本,现实中由演员按剧本表演,在ansible中由计算机进行安装&#x…...
vue3封装Element导航菜单
1. 导航外层布局 AsideView.vue <template><el-menu:default-active"defaultActive"class"my-menu":collapse"isCollapse":collapse-transition"false"open"handleOpen"close"handleClose"><menu…...
字符串的函数
头文件 # include <string.h> 五大函数: strlen()、strcpy、strcat()、strcmp()、strstr() 用法: strlen():计算字符串长度,但不计\0这个字符 #include <string.h> int main() {char arr[] "abcdef"…...
Linux安装redis(基于CentOS系统,Ubuntu也可参考)
前言:本文内容为实操记录,仅供参考! 一、下载并解压Redis 1、执行下面的命令下载redis:wget https://download.redis.io/releases/redis-6.2.6.tar.gz 2、解压redis:tar xzf redis-6.2.6.tar.gz 3、移动redis目录&a…...
ChatGPT引领量化交易革命:AI在金融创新的浪潮中崭露头角
随着科技的飞速发展,金融领域正迎来一场前所未有的创新浪潮。在这场变革中,ChatGPT凭借其卓越的自然语言处理能力和深度学习能力,正引领量化交易进入新时代。 量化交易,作为现代金融领域的一种重要交易方式,依赖于复杂的数学模型和大量的历史数据来制定交易策略。然而,传…...
无忧微服务:如何实现大流量下新版本的发布自由
作者:项良、十眠 微服务上云门槛降低,用好微服务才是关键 据调研数据显示,约 70% 的生产故障是由变更引起的。在阿里云上的企业应用如茶百道、极氪汽车和来电等,他们是如何解决变更引起的稳定性风险,实现了在白天高流…...
衡水企业做网站多少钱/盘古搜索
现在市场上出售的变频电源种类繁多,功能也日益强大,中港扬盛83变频电源的性能也越来越成为调速性能优劣的决定因素,除了变频电源本身制造工艺的“先天”条件外,对变频电源采用什么样的控制方式也是非常重要的。下表综述了近年来各…...
医疗网站建设方案/网络推广都需要做什么
本文继续上篇文章介绍SVN冲突问题解决方法,在学习SVN过程总可能会遇到SVN冲突问题,这里就向大家简单介绍一下解决方法,通过本文的学习希望你不再为SVN冲突问题而烦恼。 上节我们讲到SVN冲突解决方法中手动合并冲突,本节接着上节继…...
杭州网站建设报价/百度帐号管家
最近给一个站点配置了SSL,然后发现这台服务器上所有的站点加上https都跳转到配置SSL证书的站点上了。 解决办法:...
找人做事的网站/google seo 优化招聘
前言JDK的并发包中提供了几个非常有用的工具类,这些工具类给我们在业务开发过程中提供了一种并发流程控制的手段,本文会基于实际应用场景介绍如何使用Semaphore,以及内部实现机制。Semaphore是什么Semaphore也叫信号量,在JDK1.5被…...
太原网站建设工作室/网站推广的方法有哪些
Python比较运算符(关系运算符) 比较运算符,也称关系运算符,用于对常量、变量或表达式的结果进行大小比较。如果这种比较是成立的,则返回 True(真),反之则返回 False(假&…...
网站建设 时间安排/万网注册域名查询
最进在学Panda3D,把过程稍微记录一下,以供以后参考。 Panda3D是一套基于C编写并且提供了Python调用方式的库,主要用于3D游戏的开发,具体介绍这里就不多说了,见官网:http://www.panda3d.org/。 这里…...