我不會拋下這個殘破的世界
在現代游戲引擎中,有一個“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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/514180.html
標籤:其他
上一篇:行為樹的優缺點
