虚幻引擎UE5专用服务器游戏开发-32 使用Gameplay Tags阻止连招触发

目标:我们上节用GameplayAbility使角色可以连击攻击,但是,当不断的按下鼠标左键时,蒙太奇动画又重新开始播放,使得动画很怪异,现在要解决这个问题,当蒙太奇播放时,再按鼠标左键时,蒙太奇不会重新播放.

方法:可以使用标签功能

方法一:蓝图标签设置

打开蓝图:/All/Game/Character/Crunch/GameplayAbility/Combo:

GA_Combo_Crunch_BP

资产标签选择:

用标签阻止能力:

效果:

方法二:C++添加标签

Source/Crunch/Public/GAS/CAbilitySystemStatics.h:

cpp 复制代码
// Copyright@ChenChao

#pragma once

#include "CoreMinimal.h"
#include "GameplayTagContainer.h"
#include "CAbilitySystemStatics.generated.h"

/**
 * 
 */

UCLASS()
class CRUNCH_API UCAbilitySystemStatics : public UBlueprintFunctionLibrary
{
	GENERATED_BODY()
public:
	static FGameplayTag GetBasicAttackAbilityTag();
};

Source/Crunch/Private/GAS/CAbilitySystemStatics.cpp:

cpp 复制代码
// Copyright@ChenChao


#include "GAS/CAbilitySystemStatics.h"

FGameplayTag UCAbilitySystemStatics::GetBasicAttackAbilityTag()
{
	return FGameplayTag::RequestGameplayTag(FName("Ability.BasicAttack"));
}

我们在Config/DefaultGameplayTags.ini中添加标签:

cpp 复制代码
;METADATA=(Diff=true, UseCommands=true)
[/Script/GameplayTags.GameplayTagsSettings]
ImportTagsFromConfig=True
WarnOnInvalidTags=True
ClearInvalidTags=False
AllowEditorTagUnloading=True
AllowGameTagUnloading=False
FastReplication=False
bDynamicReplication=False
InvalidTagCharacters="\"\',"
NumBitsForContainerSize=6
NetIndexFirstBitSegment=16
+GameplayTagList=(Tag="Ability.BasicAttack",DevComment="基础攻击")

Source/Crunch/Public/GAS/GameplayAbility/GA_Combo.h:

构造函数添加标签:

cpp 复制代码
public:
	UGA_Combo();

Source/Crunch/Private/GAS/GameplayAbility/GA_Combo.cpp:

cpp 复制代码
UGA_Combo::UGA_Combo()
{
	AbilityTags.AddTag(UCAbilitySystemStatics::GetBasicAttackAbilityTag());
	BlockAbilitiesWithTag.AddTag(UCAbilitySystemStatics::GetBasicAttackAbilityTag());
}
相关推荐
mxwin13 小时前
Unity Shader URP:法线如何进行光照计算
unity·游戏引擎·shader
德迅云安全-上官13 小时前
游戏盾的原理解析与游戏盾的优势特点
游戏
万法若空14 小时前
C/C++基本类型表示范围
c语言·开发语言·c++
凡人叶枫14 小时前
Effective C++ 条款15:在资源管理类中提供对原始资源的访问
linux·开发语言·c++·stm32·单片机
郝学胜-神的一滴14 小时前
中级OpenGL教程 009:用环境光告别模型死黑
前端·c++·unity·godot·图形渲染·opengl·unreal
张学徒14 小时前
Godot 4.x 中导入Excel文件的最简单的方式
游戏·godot·gdscript·游戏开发
cccyi714 小时前
C++ 面试题整理
c++·面试
Swift社区15 小时前
鸿蒙游戏如何实现稳定 60FPS?
游戏·华为·harmonyos
代码中介商15 小时前
C++ 智能指针完全指南(二):shared_ptr 深度详解
开发语言·c++
WWW652615 小时前
代码随想录 打卡第五十四天
数据结构·c++·算法