15. UE5 GAS RPG使用GameplayTag

本文介绍了GameplayTag在UnrealEngine中的扩展使用,作为一种高效的性能优化工具,它支持层级结构,用于对象识别、匹配和过滤。此外,还详细讲解了如何创建和管理GameplayTag,以及如何通过数据表格来组织和应用这些标签。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GameplayTag本来是应用在GAS游戏技能系统里面的,后来UE直接将其抽离出来,作为一个模块,现在可以不在GAS里也可以使用这个模块。比如,我需要判断一个射线拾取的物体,首先我需要判断这个actor是否存在,然后判断是否是对应类型,如果我们使用GameplayTag,直接判断拾取的actor上面是否含有对应标签,可以提高性能。
GameplayTag也不是单纯的字符串标签,而是一种具有层级结构的对象,可以用作识别、匹配、分类或过滤易于管理,而且完全支持自定义结构。
在GAS中,我们可以根据标签来设置技能或者GE之间的关系,比如角色在眩晕状态下,会附加一个状态标签,如果要施放一个技能时,这个标签会阻止技能的施放。
你可以将标签应用到输入,技能,属性,伤害类型,buff,消息通知,数据等等方面。

创建游戏标签

打开项目设置,在左侧找到GameplayTags
在这里插入图片描述
通过点击管理Gameplay标签来编辑标签,或者新增Gameplay标签源文件进行修改
在这里插入图片描述
打开标签管理器,可以增加新的标签,并且编写对应的注释和源文件
在这里插入图片描述
这里我们将之前用到的四个属性都添加到标签中,并且都存到了DefaultGameplayTags.ini中
在这里插入图片描述
这个文件存到了项目的Config文件夹中
在这里插入图片描述
用记事本打开这个文件的样子
在这里插入图片描述
如果你修改了这里的内容,需要重新启动编辑器来更新编辑器内的显示。

使用数据表格创建游戏标签

首先右键创建数据表格
在这里插入图片描述
数据表结构这里选择GameplayTagTableRow
在这里插入图片描述
这个数据表英文为DataTable,所以我们以DT为前缀,设置DT_PrimaryAttributes用于存储主要属性
在这里插入图片描述
点击上方的添加
在这里插入图片描述
在下方输入tag和描述
在这里插入图片描述
下面是我添加的几个属性
在这里插入图片描述
点击新增一个标签列表
在这里插入图片描述
设置刚才制作的数据表格
在这里插入图片描述
然后打开标签管理器查看
在这里插入图片描述

### UE5 中基于 GAS 架构的 RPG 游戏开发 #### 创建角色属性系统 在 Unreal Engine 5 (UE5) 的游戏中,Gameplay Ability System (GAS) 提供了一种强大的方式来管理游戏角色的能力和属性。为了创建一个基本的角色属性系统,在项目设置中启用插件 `GameplayAbilities` 和 `GameplayTags` 是必要的[^1]。 定义自定义属性集类继承于 `UAttributeSet` 类,用于表示玩家的生命值、法力值和其他统计信息: ```cpp // MyCharacterAttributes.h #pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "AbilitySystemComponent.h" #include "MyCharacterAttributes.generated.h" /** * */ UCLASS() class MYGAME_API UMyCharacterAttributes : public UAttributeSet { GENERATED_BODY() public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Attributes") FGameplayAttributeData Health; ATTRIBUTE_ACCESSORS(UMyCharacterAttributes, Health) // Other attributes like Mana, Stamina can be added here similarly. }; ``` #### 实现能力框架 接着实现具体的游戏玩法功能——即“能力”。这涉及到编写新的 C++ 或蓝图脚本文件以扩展 `UGameplayAbility` 基础类。这些对象封装了执行特定动作所需的数据逻辑,比如攻击敌人或施放魔法技能等操作。 对于每个想要赋予给角色的新能力,都需要单独创建对应的子类实例并配置其行为参数。例如,可以构建名为 `AGrenadeThrowAbility` 的投掷手雷能力类,并通过编辑器界面指定冷却时间、消耗资源量以及效果范围等相关设定。 #### 设计任务与奖励机制 当考虑如何在游戏中引入任务系统时,可以通过 GAS 来追踪目标进度并向完成挑战的用户提供反馈。利用 `FGameplayTagContainer` 结合标签查询表达式匹配条件触发事件,从而动态调整难度等级或是解锁新区域等内容更新。 此外,还可以借助该系统的灵活性为不同类型的成就设立专属奖赏池,允许开发者轻松定制各种形式的经验加成、道具掉落概率提升等奖励措施。 #### 集成用户界面显示 为了让玩家能够直观了解当前状态变化情况,应该同步修改 HUD 组件以便实时反映最新数值变动。通常做法是在屏幕角落固定位置绘制小型图标条形图等形式展示生命槽、能量棒之类的关键指标;同时也可以采用弹窗提示框的方式告知重要消息通知。 最后值得注意的是,由于 GAS 自身并不直接处理 UI 层面的工作,因此这部分工作往往需要额外投入一定精力去精心打磨用户体验细节部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值