UE5 Game Features的使用
UE5 GameFeatures的使用
?
一.?首先要在插件管理里打開相應(yīng)插件功能
GameFeatures和ModularGameplay

二.?添加新的插件


選擇游戲功能(僅內(nèi)容),UE5正式版多了個C++的. 路徑默認不要修改,只檢測目錄下的插件為GameFeatures.
點擊創(chuàng)建后自動生成目錄和資產(chǎn)(GameFeatureData)

GameFeature的機制是直接讀取跟插件同名的GameFeatureData資產(chǎn)的,所以我們應(yīng)該去編輯它,但不要去改它的名字.
點擊創(chuàng)建后可能會出的問題:
1.?看不到插件目錄?
需要在內(nèi)容瀏覽器里勾選顯示插件內(nèi)容

2.?點擊創(chuàng)建后沒有自動生成目錄和資產(chǎn)?
檢查插件管理器是否勾選新建的插件,勾選上然后重啟引擎

3.?目錄下沒有生成GameFeatureData資產(chǎn)?
?手動創(chuàng)建同名GameFeatureData資產(chǎn),空白處右鍵->其他->數(shù)據(jù)資產(chǎn)->選擇GameFeatureData資產(chǎn),命名同目錄名.記得Save資源.

三.?配置Asset Manager
默認情況下創(chuàng)建好插件會自動添加GameFeatureData資產(chǎn)類型,如果沒有自動添加,系統(tǒng)會報警告.點擊警告后的鏈接會自動添加. 沒有添加就無法正常工作.

四.?配置Actions
打開GameFeatureData資產(chǎn),大的分類有<狀態(tài)><操作><資產(chǎn)>;

<狀態(tài)>

1.?插件當前的狀態(tài), 置為激活狀態(tài)插件才能生效. 這4個狀態(tài)之間可以雙向轉(zhuǎn)換以進行加載卸載。
2.?在Active狀態(tài)是無法Edit Plugin信息的,編輯完GameFeatureData后最好觸發(fā)重新加載一下來生效。
3.?加載激活插件有幾種辦法可以用,在編輯器里可以直接通過按鈕來切換。在運行時還可以通過GameFeaturesSubsystem提供的C++ API。也可以通過命令行指令來執(zhí)行,其底層核心都是調(diào)用的UGameFeaturesSubsystem內(nèi)部的各種方法。你可以在你的游戲邏輯合適位置來調(diào)用這些API。
<操作>

1.?插件要做的動作,默認有四種動作
2.?Add Cheats 添加作弊
3.?Add Components 添加組件
4.?Add Data Registry 添加數(shù)據(jù)注冊
5.?Add Data Registry Source 添加數(shù)據(jù)注冊源
<資產(chǎn)>

1.?資產(chǎn)管理,跟隨插件的資產(chǎn)添加
2.?Primary Asset Type 資產(chǎn)名
3.?Asset Base Class 資產(chǎn)類型
4.?Has Blueprint Classes 是否是藍圖
5.?Is Editor Only 僅編輯模式
6.?Directories 要掃描的資產(chǎn)類型目錄
7.?Specific Assets ??單個資產(chǎn)
五.?注冊Actor為接收者
1.?Actor要把自己注冊為接收者。為想要動態(tài)Add Component的Actor在 Begin Play和End Play分別調(diào)用Add Receiver和Remove Receiver。之后就可在其上應(yīng)用Add Component 操作,其他類型的Action不需要此手動操作。

2.?把Actor注冊為Receiver,Add Component才能正常工作。
3.?即使是在Game Feature生效之后再事后注冊Actor為Receiver,也能成功的Add Component。
4.?在游戲功能Component內(nèi)使用新的輸入系統(tǒng)Enhanced Input后,在Begin Play下調(diào)用注冊成功,但輸入會無效,使用Event Possessed調(diào)用注冊成功,輸入有效。(也可能跟輸入系統(tǒng)無關(guān),問題待查)