我正在运行 UE 5.3 我创建了游戏实例子系统 C++ 类,它添加了在初始化每个生成的 Actor 之前运行的特定逻辑。请参阅下面的一段代码。当我在 PC 上的虚幻引擎中以 PIE 模式运行游戏时,效果很好。但是当我将其部署到 Android 上时,游戏永远不会进入我添加到 OnActorPreSpawnInitialization 中的 Lambda 内部。任何帮助为什么它被忽略将非常感激。
void UMyGameInstanceSubsystem::Initialize(FSubsystemCollectionBase& Collection)
{
auto ActorSpawnLambda = FOnActorSpawned::FDelegate::CreateLambda([this](AActor* InActor)
{
UE_LOG(LogTemplateCBGameInstanceSubsystem, Warning, TEXT("Run lambda Starting point"));
if (AChaosCachePlayer* CCP = Cast<AChaosCachePlayer>(InActor))
{
if (ChaosCacheCollection_Temp)
{
UE_LOG(LogTemplateCBGameInstanceSubsystem, Warning, TEXT("Run lambda from class UMyGameInstanceSubsystem "));
PostSpawnChaosCachePlayer(CCP, ChaosCacheCollection_Temp);
ChaosCacheCollection_Temp = NULL;
}
}
});
UE_LOG(LogTemplateCBGameInstanceSubsystem, Warning, TEXT("GameInstance subsystem is Initialized"));
GetWorld()->AddOnActorPreSpawnInitialization(ActorSpawnLambda);
}
GameInstanse 子系统的加载时间早于 Android 的 GameMode。可以添加委托,例如GameMode 构造函数可以解决这个问题。