首页 > 其他分享 >【UE4】GameplayTag的妙用(ActorTag)

【UE4】GameplayTag的妙用(ActorTag)

时间:2022-10-13 17:33:49浏览次数:35  
标签:类型转换 妙用 GameplayTag GetActor Tag HitResult UE4 ActorTag

我不会抛下这个残破的世界

在现代游戏引擎中,有一个“Tag”的概念,无论是在Unreal还是Unity中,他们都有大同小异的tag实现。

此篇随笔以Actor Tag举例,简单讲解一些常见情况下它的妙用,后续我还会更新例如网络同步中的FastReplication使用GameplayTag加快复制过程等其他内容,此文章只是随笔,讲解不好,也不全面,还请各位读者理解。

首先,我们要先了解 Gameplay Tag是什么样的东西,这里贴出Unreal Engine Documentation上的解释。

Gameplay Tag可以添加到任何项目中,将对象与Tag相关联,可以用于为您的项目识别、匹配、分类或过滤它们。

很抽象吧?别担心,我现在会用一个例子简单说明它。

例如我们的武器Actor中的UBulletComponent有一个通过射线检测造成伤害的功能,如果您按照大多数人的写法,在射线检测击中对象时,您必须做一个强制类型转换来确定对象的类型。但这样对性能是相当不好的,我有一个轻松的解决方案。

//旧方法伪代码
if(HitResult.GetActor() != nullptr)
{

if(Cast(HitResult.GetActor()))
{

UGameplayStatics::ApplyPointDamage(HitResult.GetActor());
}

}

接下来是使用GameplayTag的新方法,实际上我们不需要任何强制类型转换,只需要判断tag,是否符合我们想要的即可。
//新方法伪代码

if(HitResult.GetActor().ActorHasTag("Damageable"))
{
ApplyDamage

}

这只是GameplayTag的一个小用处,实际上它的妙用可不止这一个,物理碰撞结果 节省网络复制带宽 GameplayAbilitySystem中标记玩家技能id……

实际上我们只需要知道GameplayTag的作用“识别 匹配 分类”,并举一反三,我们就可以利用它去优化很多我们之前做的事情。

文章到这里就结束了,希望能够帮助到各位。

夜に駆ける - YOASOBI

标签:类型转换,妙用,GameplayTag,GetActor,Tag,HitResult,UE4,ActorTag
From: https://www.cnblogs.com/YOASOBIComp/p/16788937.html

相关文章

  • 如何在 UE4 中制作一扇自动开启的大门
    前言相信很多玩过游戏的朋友都知道,在玩游戏的过程中,如果我们被一道门给挡住了去路,只要按下某一个按键,门就会自动的开启。于是,今天我就带大家来制作一道会自动开启的大门吧!场......
  • 在UE4中创建蓝图类,点开蓝图类没有编辑界面
    UE4系列文章目录文章目录​​UE4系列文章目录​​​​前言​​​​一、解决办法​​​​总结​​前言当我们在UE4的内容浏览器中新建了蓝图类,例如AKM_Bullet_BP,第一次点开这......
  • Ue4_通用化交互组件设计(待续)
    简述需求:在游戏场景中,碰到可交互物品,显示不同的Widget(提示不同的文字提示),碰到物品时显示,远离有效距离关闭显示,并按某一个按键触发该item交互,默认F常规解决方案:一ItemT......
  • UE4 联网RPC部分
    有些人生来就是为了奔跑,而有些人,则拥有更高的目标>笔者近期在进行UEC++网络的一些开发,发现RPC这个部分它看起来很简单,理解起来也算不上难。但真正应用起来,对netcode经......
  • UE4学习笔记2
    P8.创建项目全流程和模板试玩P9.2-1超详细编辑界面介绍P10.2-2视口导航(在视口界面移动视角)(P8)创建项目,没什么好说的,要注意选的是空白的还是带模板的,注意下面的存......
  • 2022是元宇宙爆发年 最近Unity元宇宙外包和UE4元宇宙外包项目做的比较多 有需要欢迎联
    2022是元宇宙爆发年最近Unity元宇宙和UE4元宇宙相关项目做的比较多有需要欢迎联系我们......
  • ue4 ue5 使用git管理经常无法编译的问题
    ue4或ue5使用git后,如果项目中出现任意中文文件就会导致代码无法编译。解决方案是修改下面的文件:C:\Users\【你的用户名】\AppData\Roaming\UnrealEngine\UnrealBuildToo......
  • 关于UE4 C++项目编译rapidxml库并运行时报错问题
    新建了一个UE4的C++项目,想使用第三方的rapidxml库对我以前作cocos2d-x的游戏配置数据进行解析,因为以前就用的是这个库。发现在UEEditer里编译C++的时候不会出错,但在xc......
  • UE4框架(转)
    有很多人是从UE3接触到Unreal,如果你也对UE3非常了解,便能很快的上手UE4。但是,UE4的开发模式还是有所不同的。1.谈谈过往,UE1和UE2。我知道在那个时候咱们一样挥......
  • UE4图书馆
      ......