跳至主要內容

c7.GF|GameplayFeature

Mr.Si大约 3 分钟u++

GameplayFeature

游戏功能(Game Features) 和 模块化Gameplay(Modular Gameplay) 插件可以帮助开发人员为项目创建独立功能。

概念

头像
啥意思?我可以理解成模块化开发?
头像
是这么个意思,借用大佬的图形象的解释一下。
头像
所以本质是插件+资产化?
头像
可以这么理解。Game Features后面我们简称GF,既然是插件,就得康康怎么用再来决定要不要用到开发流程上。

实践

1.插件

2.错误提示

3. 根据游戏模式设置特性

头像
解释一下这里的当前状态的作用
  • 已安装:
  • 已注册:
  • 已加载:
  • 激活:

4.目录结构

头像
可以看到和普通插件一样,拥有一个独立的Content,其他的资源该怎么加就怎么加。

5.默认动作

头像
下面一行就是要添加的动作,官方给了几个默认的行为
头像
以添加组件为例
头像
然后在对应的BP中添加对应的激活和关闭节点即可(依然是一个子系统)
头像
当然官方的Lyra案例中写了个更多例子
头像
想要自定义也很简单,只需要继承UGameFeatureAction即可。
头像
当然,只有CPP中可以看到

6.gamefeature

头像
接着是一些要扫描的资产,比如地图
头像
值得注意的是,一但GF化后的地方就无法使用软引用的方法打开地图了。例如:我在UMG中创建打开一个地图。
头像
会提示资产非法。
头像
你可以做一个对应的Action来添加地图,也可以模仿Lyra通过注册资产来加载。
FString UCommonSession_HostSessionRequest::GetMapName() const
{
	FAssetData MapAssetData;
	if (UAssetManager::Get().GetPrimaryAssetData(MapID, /*out*/ MapAssetData))
	{
		return MapAssetData.PackageName.ToString();
	}
	else
	{
		return FString();
	}
}
头像
直接用BP也可以

7.巨坑

头像
一模一样的两个工程,有时候莫名其妙项目就看不到插件内容。一度以为自己写了什么BUG。
头像
后来发现即便是显示了设置插件内容如果看不到插件目录也要重新点开一遍!
头像
卧槽!

参考链接

官网open in new window