【UE4】GameplayTag的妙用(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
【UE4】GameplayTag的妙用(ActorTag)的更多相关文章
- [UE4]IsValid方法妙用
由于UE4中各个对象的创建顺序无法保证,因此可以使用IsValid方法判断一个对象是否有效,如果无效则初始化,如果有效则直接可以使用.
- ue4打包问题的巧妙解决——二分回退大法!
昨天突然发生了一件非常恐怖的事--我的ue4项目居然不能打包了!! 大概是这么一回事: UATHelper: 打包 (Windows (64位)): UnrealBuildTool: ERROR: ...
- 深入浅出UE4网络
UE4中的官方文档结构比较混乱,且有部分错误,不方便学习.笔者试图通过本文,整理出一篇关于UE4网络的文章,方便朋友们对UE4中的网络同步部分的认识,并有进一步理解.如有讲得不清楚明白的地方,还望批评 ...
- UE4技术总结——委托
UE4技术总结--委托 目录 UE4技术总结--委托 一.定义 二.用法 2.1 声明与调用委托 2.1.1 单播委托 2.1.1.a 声明 2.1.1.b 绑定 2.1.1.c 执行委托 2.1.1 ...
- 【CSS进阶】伪元素的妙用--单标签之美
最近在研读 <CSS SECRET>(CSS揭秘)这本大作,对 CSS 有了更深层次的理解,折腾了下面这个项目: CSS3奇思妙想 -- Demo (请用 Chrome 浏览器打开,非常值 ...
- angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用
今天我们要讲的是ng2的路由系统. 例子
- UE4新手引导之下载和安装虚幻4游戏引擎
1) 进入虚幻4的官方主页(https://www.unrealengine.com/) 这里你可以获得关于虚幻4的最新资讯,包括版本更新.博客更新.新闻和商城等.自2015年起,该引擎已经提供免费下 ...
- UE4新手引导入门教程
请大家去这个地址下载:file:///D:/UE4%20Doc/虚幻4新手引导入门教程.pdf
- JavaScript的妙与乐(一)之 函数优化
JavaScript的妙与乐系列文章主要是展示一些JavaScript上面比较好玩一点的特性和一些有用的技巧,里面很多内容都是我曾经在项目中使用过的一些内容(当然,未必所有技巧的使用频率都很高^_^) ...
- Promise的前世今生和妙用技巧
浏览器事件模型和回调机制 JavaScript作为单线程运行于浏览器之中,这是每本JavaScript教科书中都会被提到的.同时出于对UI线程操作的安全性考虑,JavaScript和UI线程也处于同一 ...
随机推荐
- 虚拟机中debian11修改控制台(console)分辨率|linux控制台分辨率|linux console resolution
实体机一般安装好驱动分辨率就没啥问题,而且个人pc也没有只用控制台的需求.但是虚拟机中不安装桌面的时候,默认的控制台分辨率常不能满足需求. 这个需求貌似也比较少,而且几乎搜到的文章大部分都是旧的,不能 ...
- 计算机科学导论-第三版-学习笔记-chapter1-绪论
小测验的网站找不到,小程序也找不到,这两个部分的习题就不做了. Cengage Learning - Foundations of Computer Science这上面有部分答案.这里用斜体标出.我 ...
- PCA降维练习
[题目] 1.现有我国大陆30个省.直辖市.自治区的经济发展状况数据集如表所示,包括8项经济指标:国民生产总值(A1):居民消费水平(A2):固定资产投资(A3):职工平均工资(A4):货物周转量(A ...
- .Net Core WebApi + Vue前后端分离项目中的jwt令牌应用
1.Start up 里面配置JWT认证方案 //认证方案 services.AddAuthentication(option => { option.DefaultAuthenticateSc ...
- select标签如何实现 每个option传递多个值
设计项目时 我们有时候会利用 <select> <option value="值1" > </option> </select> ...
- Rest-Assured发送POST请求:创建Hello-imook
package heyuan.RestAssuredDemo;import static org.junit.jupiter.api.Assertions.*;import org.junit.jup ...
- redis常用命令之Hash
redis常用命令之Hash Hash常用命令 redis 可以理解为一个全局的大字典,key就是数据的唯一标识符.对应的key不同,value也不同.redis有5个基本的数据类型. 1 redis ...
- ArrayList集合的方法
ArrayList元素的增加.插入.删除.清空.排序.反转 using System; using System.Collections; using System.Collections.Gener ...
- 信息安全day1
课程目标:中小型网络建立.操作和故障排除,连接到WAN和实施网络安全 路由器三层协议功能 多层交换机具备三层协议的功能 终端服务器:特殊的路由器 网云:1.未知网络区域 2.不受自己管理的网络区域 A ...
- mysql8.0修改密码
把密码设置为空:UPDATE mysql.user SET authentication_string='' WHERE user='root' and host='localhost'; 查看USE ...