GameFeatures使用
本质是插件,和普通插件不同,普通插件不依赖项目,被项目依赖,而GF则是反过来,依赖项目注入玩法逻辑,不被项目依赖,因为可能被随时加载或卸载,因此uplugin的ExplicitLoaded
配置必须为true
。
基本构成
- GFD:
GameFeatureData
,配置状态以及若干Action,激活后会执行 - GFA:
GameFeatureAction
,在GFD中配置,可以继承后扩展,执行自定义的行为 - GFS:
GameFeatureSubsystem
,一些常用方法 - GFCM:
GameFrameworkComponentManager
,负责Component相关的增加和移除,如AddReceiver
和RemoveReceiver
方法
编译问题
由于GF需要依赖项目,会在build.cs文件中增加项目模块,可能会导致一些编译问题,大多都是头文件include不足,或有被项目的头文件引用的其他模块,没有放在项目build.cs的public依赖中,导致GF模块编译时找不到文件。
状态切换
一共四个目标状态,还有很多其他中间状态在GF系统中处理,状态转换可以使用相关的command或者调用c++接口。
Installed
: 已安装,但不为项目所知Registered
: 注册到项目中,但未加载到内存中Loaded
: 已经加载好但未激活,没有发生实际作用Active
: 已经激活,GFD中的Action会依次执行
融入已有系统
现有的技能释放是通过SCG资产的配置来完成,节点中配置技能类、要使用的DA等,接收到输入后根据角色绑定的SCG读取相应的节点生成技能对象,初始化数据走逻辑,那么如何在不影响现有配置的情况下,让角色释放一个GF的技能呢?
首先GF的功能是否可以做成技能,如果是要如何进入已经配好的SCG中