Tizeng's blog Ordinary Gamer

W笔记4——GameFeatures

2024-03-06
Tizeng

GameFeatures使用

本质是插件,和普通插件不同,普通插件不依赖项目,被项目依赖,而GF则是反过来,依赖项目注入玩法逻辑,不被项目依赖,因为可能被随时加载或卸载,因此uplugin的ExplicitLoaded配置必须为true

基本构成

  • GFD:GameFeatureData,配置状态以及若干Action,激活后会执行
  • GFA:GameFeatureAction,在GFD中配置,可以继承后扩展,执行自定义的行为
  • GFS:GameFeatureSubsystem,一些常用方法
  • GFCM:GameFrameworkComponentManager,负责Component相关的增加和移除,如AddReceiverRemoveReceiver方法

编译问题

由于GF需要依赖项目,会在build.cs文件中增加项目模块,可能会导致一些编译问题,大多都是头文件include不足,或有被项目的头文件引用的其他模块,没有放在项目build.cs的public依赖中,导致GF模块编译时找不到文件。

状态切换

一共四个目标状态,还有很多其他中间状态在GF系统中处理,状态转换可以使用相关的command或者调用c++接口。

  • Installed: 已安装,但不为项目所知
  • Registered: 注册到项目中,但未加载到内存中
  • Loaded: 已经加载好但未激活,没有发生实际作用
  • Active: 已经激活,GFD中的Action会依次执行

融入已有系统

现有的技能释放是通过SCG资产的配置来完成,节点中配置技能类、要使用的DA等,接收到输入后根据角色绑定的SCG读取相应的节点生成技能对象,初始化数据走逻辑,那么如何在不影响现有配置的情况下,让角色释放一个GF的技能呢?

首先GF的功能是否可以做成技能,如果是要如何进入已经配好的SCG中


上一篇 GAS的使用

Comments

Content