【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线程也处于同一 ...
随机推荐
- oracle 索引创建
--查询表里的索引 select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.inde ...
- windows 2012 打补丁升级后不能启动处理
如果可以进入WinRE这个修复的高级选项,选择安全模式,是否可以进入,卸载最近安装的补丁,再重启看一下. 如果无法进入安全模式的话,那么选择cmd模式,使用下方命令.这通常会回退pending的upd ...
- 使用 EMQX Cloud 桥接数据到 GCP Pub/Sub
前不久,Google 宣布其旗下的 GCP IoT Core 即将在 2023 年 8 月 16 日停止提供服务.这意味着大量使用 GCP IoT Core 的用户可能需要将他们的 IoT 应用迁移到 ...
- 越权检测 burp插件 autorize 使用
Autorize 官方描述 Autorize 是 Burp Suite 的自动授权强制检测扩展.它是由应用程序安全专家 Barak Tawily 用 Python 编写的.Autorize 旨在通过执 ...
- 手机安装APK文件,出现-应用未安装-软件包无效-安装包异常
在项目的根的gradle.properties文件中添加 android.injected.testOnly=false 即可. 猜想:因为是在打debug包,然后这个属性变为了true?然后手机会因 ...
- Python - Numpy 学习笔记
#python - Numpy learning import numpy as np #---Numpy学习笔记---(第四章)--- #切片,浅拷贝 a = np.arange(10) print ...
- 蓝桥杯训练赛二-问题 A
题目描述 用简单素数筛选法求N以内的素数. 输入 N 输出 2-N的素数 样例输入 100 样例输出 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 ...
- kaola
考拉布局 CSS <style> * { margin: 0; padding: 0; } body { background-color: #f5f5f5; } .clearfix:af ...
- css设置背景图(背景图太大导致图片显示不全)
.bg{background:url('/back.png');filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(sizi ...
- SVD动态图
library(gganimate) library(gifski) # 构造数据 phi<-pi/6 theta<-pi/3 c<-matrix(c(cos(phi),sin(ph ...