最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

UE4 GAS GamplayEffect 簡(jiǎn)單總結(jié)①

2023-08-27 09:03 作者:末日時(shí)你吃了嗎  | 我要投稿

注意,這只是一個(gè)基于個(gè)人學(xué)習(xí)經(jīng)驗(yàn)的簡(jiǎn)單嘗試性總結(jié),可能會(huì)出現(xiàn)錯(cuò)誤,硬要說的話本人也沒有對(duì)此完全地掌握。如果您發(fā)現(xiàn)其中錯(cuò)誤了,請(qǐng)務(wù)必提出。


指定教材 《GASDocumentation》


目錄??

一 認(rèn)識(shí)結(jié)構(gòu)

二 持續(xù)策略

三 Modifier?

四 Execution?


一?認(rèn)識(shí)結(jié)構(gòu)

GameplayEffect(后續(xù)簡(jiǎn)稱GE)

此處省略一堆介紹語(yǔ)

GE的持續(xù)策略有三種,分別是Instant(瞬時(shí))、Infinite(無限)和HasDuration(有持續(xù)時(shí)間)。

GE的屬性修改可以分為兩類,一個(gè)是通過Modifier進(jìn)行修改,還有一種是借助Execution。此外,Modifier有四種方式,分別是 ScalableFloat、AttributeBased、CustomCulculationclassSetByCaller。后續(xù)會(huì)分別介紹。

這里補(bǔ)一張導(dǎo)圖。

?

給我導(dǎo)

沒有人比我更貼心地標(biāo)注了



二 持續(xù)策略

① Instant策略 (間歇地,即設(shè)置了周期觸發(fā)的,也可以視為瞬時(shí)的)

*?僅有瞬時(shí)類型的GE,會(huì)觸發(fā)AttributeSet的PostGameplayEffectExecute方法

*?僅有瞬時(shí)類型的GE,能夠使用Execution Calculation [ExecCalc]

*??對(duì)于Instant類型所攜帶的GameplayCue,具體為GameplayCueNotifyStatic子類,可以使用HandleGameplayCueEvent或OnExecution,復(fù)寫兩個(gè)方法任意一個(gè)即可。


② Infinite策略(Duration策略與之類似,兩者可以統(tǒng)稱為Ongoing類型),

*??對(duì)于Ongoing類型所攜帶的GameplayCue,具體為GameplayCueNotifyStatic子類,會(huì)在添加時(shí)觸發(fā)OnActive,會(huì)在移除時(shí)觸發(fā)OnRemove,不應(yīng)當(dāng)嘗試觸發(fā)HandleGameplayCueEvent。

?


三 Modifier

① ScalableFloat

可以傳入一個(gè)CurveTable,完成由等級(jí)到數(shù)值的映射,沒什么好說的,最常用的方式。

② AttributedBase

基于其他屬性的計(jì)算與修改,比①稍微復(fù)雜一點(diǎn)方式。

示例:恢復(fù)最大生命值的12%。

過程:需要先指定BackingAttribute為MaxHP,然后在Coefficient一欄填寫 0.12,最后指定賦予的屬性。

這里的Healing是和Damage類似的臨時(shí)數(shù)值


③ CustomCulculationclass 即ModMag

最好C++來實(shí)現(xiàn),但可以考慮使用藍(lán)圖子類修改其中部分的預(yù)設(shè)數(shù)值。

非常實(shí)用的方式,可以一次捕捉多個(gè)屬性并賦給另一個(gè)屬性。

示例:角色的攻擊力AttackPower 往往是由多個(gè)屬性決定的,如等級(jí),攻擊力加成,攻擊點(diǎn)數(shù)等。

公式: AttackPower = [(ATK + Level * 2) + Add] * (1 + Mul)

過程:

?


*?可以在C++中定義Float數(shù)值,在藍(lán)圖子類中修改。

*?可以在C++中定義FCurveTableRowHandle,在藍(lán)圖子類中指定相應(yīng)的CurveTable

* 以攻擊力計(jì)算GE為例,它是Infinite策略,會(huì)在游戲開始時(shí)就交給角色。


④ SetByCaller

通常為在GA中計(jì)算得到了一個(gè)數(shù)值,然后想要在GE中應(yīng)用該數(shù)值,會(huì)用到該方式。

如在GA中計(jì)算了一個(gè)基礎(chǔ)傷害,希望它能夠傳遞至GE中,以進(jìn)行進(jìn)一步的傷害計(jì)算。

一般使用GameplayTag來傳遞該數(shù)值。

過程:


?


四、Execution 處理器

最強(qiáng)大的屬性處理方式,僅支持Instant類型。

你幾乎可以在UGameplayEffectExecutionCalculation類中做你想做的任何事,唯一的缺點(diǎn)是需要被重寫的Execute_Implementation是一個(gè)const方法,會(huì)有些許不便。

在ARPGSample項(xiàng)目中有一個(gè)完整且詳細(xì)的案例,這里就不貼代碼了。一般的,會(huì)在復(fù)雜的傷害計(jì)算時(shí)用到它。

* 之前有一篇教程,提及如何將GA實(shí)例以及其他復(fù)雜結(jié)構(gòu)體傳到 Execution中。具體方式為重寫了FGameplayEffectContext。


UE4 GAS GamplayEffect 簡(jiǎn)單總結(jié)①的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
芜湖市| 平果县| 西乡县| 望城县| 钦州市| 富锦市| 兴义市| 会泽县| 内黄县| 漳平市| 灵石县| 郴州市| 新密市| 绵阳市| 金昌市| 石首市| 神农架林区| 高邮市| 康平县| 蒲城县| 海口市| 清丰县| 密云县| 田林县| 福安市| 庆城县| 临西县| 满洲里市| 昌邑市| 色达县| 舒兰市| 乌拉特中旗| 荣成市| 曲周县| 鄂伦春自治旗| 郁南县| 琼海市| 沾化县| 镇雄县| 兰州市| 普宁市|