UE5 GameFeature Runtime Load and Unload
说明
Project name = PluginTest
GameFeature Plugin name = RarSceneChange
蓝图
在蓝图中调用函数Execute Console Command
写入如下命令
Load: LoadGameFeaturePlugin RarSceneChange
UnLoad: UnLoadGameFeaturePlugin RarSceneChange
C++
准备工作
- build.cs引入模块
回到Unreal Editor中 refresh Visual studio projectPublicDependencyModuleNames.AddRange("GameFeatures")
- PluginURL
需要注意的是要引入头文件FString PluginURL; UGameFeaturesSubsystem::Get().GetPluginURLByName(FString("RarSceneChange"), PluginURL);
#include "GameFeaturesSubsystem.h"
LoadAndActivate:
- LoadAndActivateGameFeaturePlugin()
观察这个函数的定义,发现需要一个委托
这个委托的定义如下void LoadAndActivateGameFeaturePlugin(const FString& PluginURL, const FGameFeaturePluginLoadComplete& CompleteDelegate);
这是一个单播委托,需要传入参数DECLARE_DELEGATE_OneParam(FGameFeaturePluginChangeStateComplete, const UE::GameFeatures::FResult& /*Result*/); using FGameFeaturePluginLoadComplete = FGameFeaturePluginChangeStateComplete;
const UE::GameFeatures::FResult&
,建立自己的回调函数
这里需要注意两个地方:void APluginTestCharacter::OnGameFeaturePluginActiveEnd(const UE::GameFeatures::FResult& Result) { //GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Yellow,Result.GetError()); }
*Result.GetError()
在GameFeature Load成功后为空值,如果此时还调用的话,运行游戏会出现崩溃
就像上面这种情况,我想查看是否Load成功,游戏却一直崩溃
*UE::GameFeatures::FResult& Result
需要包含头文件#include "GameFeaturePluginOperationResult.h"
- 调用
UGameFeaturesSubsystem::Get().LoadAndActivateGameFeaturePlugin(PluginURL, FGameFeaturePluginLoadComplete::CreateUObject(this, &ThisClass::OnGameFeaturePluginActiveEnd));
UnLoad:
UGameFeaturesSubsystem::Get().UnloadGameFeaturePlugin(PluginURL);
UnLoad有两种API可供使用:
void UnloadGameFeaturePlugin(const FString& PluginURL, bool bKeepRegistered = false);
void UnloadGameFeaturePlugin(const FString& PluginURL, const FGameFeaturePluginUnloadComplete& CompleteDelegate, bool bKeepRegistered = false);
我使用的是第一种,不需要回调函数
最后,本文只是简单介绍了GameFeature的加载卸载过程,笔主也只是一个菜鸡,写文章主要是为了记录学习过程
关于GameFeature的用法,可以参考下面几个链接:
https://www.youtube.com/watch?v=IYbMDWZHqzg
https://www.youtube.com/watch?v=HgnkfFWoHwk
https://www.bilibili.com/read/cv16902351?from=search
最后是大钊关于GameFeature架构的分析(膜拜.jpg),很值得一看
https://zhuanlan.zhihu.com/p/467236675