虚幻Gameplay Ability System-实现回合制

GAS本身是不支持回合制的,但是经过一点小小的改造就可以让GAS用于回合制游戏(某不知名推油大佬的支持)。

首先考虑一个问题,GAS中的冷却,经过一定时间生效的伤害等都是通过什么实现的呢,gameplay effect,而gameplay effect本质上也是通过timer来实现这些功能的。如冷却3s,就是注册了一个持续时间为3s的timer,当timer被触发后,将gameplay effect移除。

而每秒触发一次则是looping为true,Time为1s的timer,本质上是一样的。

理解了这点,我们要做的事情就很清楚了,用我们自己的timer管理器替代Gameplay effect中使用的实时计时器。

创建AbilityTimerManager

因为需要修改GAS插件的源码,所以首先将插件复制到工程的Plugins文件夹中。

然后打开工程,新建None类别C++文件在GameplayAbilities/Public位置。命名为AbilityTimerManager

创建完成以后,实现AbilityTimerManager.h。

AbilityTimer为我们的计时器,用于取代实时更新的计时器。这个计时器会在角色回合开始的时候计时,即Turn+1,当Turn等于timer的注册时间+持续时间,则计时器被触发,gameplay effect产生相应的效果。

Key为AbilitySystemComponent的Map,因为每个角色有一个自己的回合计算。当使用的gameplay effect带有持续回合的时候,timer会被添加到AbilityTimer中。

GetAbilityTimer。根据ASC拿到对应的AbilityTimer。

AddAbilityTimer和RemoveAbilityTimer。添加和移除timer

ClearAllAbilityTimer。清空所有添加的timer

ClearAbilityTimer。清除指定对象的指定timer

GetAbilityTimerRemaining。获取计时器的剩余时间。

SetAbilityTimer。注册计时器,GAS中的持续时间都是通过计时器实现的,所以参数也是一致的

TickTurn。

SetAbilityTimerForNextTick。在下一帧触发timer

AbilityTimer实现以后,接下来我们需要用自己的计时器去替代gameplay effect中的计时器。首先打开文件AbilitySystemGlobals.h文件,添加如下代码,作用是生成在前面实现的TimerManager

然后打开GameplayEffect.cpp,在文件中搜索TimerManager,用我们自己的timer manager去替代原来的timer manager,关键代码是红线处的,其余是一样的,总共有七处代码需要替换

最后打开自己项目中的BlueprintLibarary文件,新建函数。在角色回合开始的时候调用下面的函数,让GAS实现回合制就完成了。

如果有问题可以在下面留言,因为是一边看视频一边写的,所以写得比较简单。

相关推荐
SmalBox32 分钟前
【节点】[Adjustment-ReplaceColor节点]原理解析与实际应用
unity3d·游戏开发·图形学
2401_8414956410 小时前
【LeetCode刷题】跳跃游戏
数据结构·python·算法·leetcode·游戏·贪心算法·数组
呆呆敲代码的小Y11 小时前
【Unity实战篇】| 游戏滑动框添加特殊效果,如实时高亮显示、曲线滑动等
游戏·unity·游戏引擎·实战·u3d·免费游戏·unity实战技巧
技术小甜甜12 小时前
[Godot] 在 Godot 3.1 中配置 ADB 可执行文件的实用指南
游戏·adb·游戏引擎·godot
技术小甜甜13 小时前
【Godot】【入门】Godot 是什么?适合做哪些类型的游戏(附路线图+避坑清单)
游戏·游戏引擎·godot
xiaohai@Linux13 小时前
STM32之移植原生的infoNES nes游戏模拟器源码实现游戏自由!!!(原生纯C版,非汇编版)
stm32·游戏·模拟器·infones·nes游戏机
Sui_Network1 天前
备受期待的 POP 射击游戏 XOCIETY 正式在 Epic Games Store 开启体验
人工智能·游戏·rpc·区块链·量子计算·graphql
CreasyChan1 天前
C# LINQ 深度解析:优缺点与性能陷阱
unity·c#·游戏开发
coder-pig1 天前
Holopix AI + TRAE SOLO | 复刻 GBA 游戏-“口袋妖怪“
人工智能·游戏
wanhengidc1 天前
在线服务器的应用场景都有哪些?
运维·服务器·科技·游戏·智能手机·云计算