UE5 Game Features的使用
UE5 GameFeatures的使用
一. 首先要在插件管理里打开相应插件功能
GameFeatures和ModularGameplay

二. 添加新的插件


选择游戏功能(仅内容),UE5正式版多了个C++的. 路径默认不要修改,只检测目录下的插件为GameFeatures.
点击创建后自动生成目录和资产(GameFeatureData)

GameFeature的机制是直接读取跟插件同名的GameFeatureData资产的,所以我们应该去编辑它,但不要去改它的名字.
点击创建后可能会出的问题:
1. 看不到插件目录?
需要在内容浏览器里勾选显示插件内容

2. 点击创建后没有自动生成目录和资产?
检查插件管理器是否勾选新建的插件,勾选上然后重启引擎

3. 目录下没有生成GameFeatureData资产?
手动创建同名GameFeatureData资产,空白处右键->其他->数据资产->选择GameFeatureData资产,命名同目录名.记得Save资源.

三. 配置Asset Manager
默认情况下创建好插件会自动添加GameFeatureData资产类型,如果没有自动添加,系统会报警告.点击警告后的链接会自动添加. 没有添加就无法正常工作.

四. 配置Actions
打开GameFeatureData资产,大的分类有<状态><操作><资产>;

<状态>

1. 插件当前的状态, 置为激活状态插件才能生效. 这4个状态之间可以双向转换以进行加载卸载。
2. 在Active状态是无法Edit Plugin信息的,编辑完GameFeatureData后最好触发重新加载一下来生效。
3. 加载激活插件有几种办法可以用,在编辑器里可以直接通过按钮来切换。在运行时还可以通过GameFeaturesSubsystem提供的C++ API。也可以通过命令行指令来执行,其底层核心都是调用的UGameFeaturesSubsystem内部的各种方法。你可以在你的游戏逻辑合适位置来调用这些API。
<操作>

1. 插件要做的动作,默认有四种动作
2. Add Cheats 添加作弊
3. Add Components 添加组件
4. Add Data Registry 添加数据注册
5. Add Data Registry Source 添加数据注册源
<资产>

1. 资产管理,跟随插件的资产添加
2. Primary Asset Type 资产名
3. Asset Base Class 资产类型
4. Has Blueprint Classes 是否是蓝图
5. Is Editor Only 仅编辑模式
6. Directories 要扫描的资产类型目录
7. Specific Assets 单个资产
五. 注册Actor为接收者
1. Actor要把自己注册为接收者。为想要动态Add Component的Actor在 Begin Play和End Play分别调用Add Receiver和Remove Receiver。之后就可在其上应用Add Component 操作,其他类型的Action不需要此手动操作。

2. 把Actor注册为Receiver,Add Component才能正常工作。
3. 即使是在Game Feature生效之后再事后注册Actor为Receiver,也能成功的Add Component。
4. 在游戏功能Component内使用新的输入系统Enhanced Input后,在Begin Play下调用注册成功,但输入会无效,使用Event Possessed调用注册成功,输入有效。(也可能跟输入系统无关,问题待查)