Я пробовал разные подходы, но Unreal имеет тенденцию запускать функции Actor несколько раз.
- Конструктор вызывается дважды
- OnConstruction вызывается много раз
- PostLoad() также вызывается более одного раза.
#include "ActorBase.h"
#include "UObject/SoftObjectPath.h"
#if WITH_EDITOR
#include "Editor.h"
#include "EditorUtilitySubsystem.h"
#include "EditorUtilityWidget.h"
#include "EditorUtilityWidgetBlueprint.h"
#include "AssetRegistry/AssetRegistryModule.h"
#include "AssetRegistry/IAssetRegistry.h"
#include "Editor/EditorEngine.h"
#include "UnrealEd.h"
#endif
AActorBase::AActorBase()
{
}
#if WITH_EDITOR
void AActorBase::OnConstruction(const FTransform& Transform)
{
}
// this is called more than once too
void AActorBase::PostLoad()
{
Super::PostLoad();
RegisterLinkedAssetChangeListener();
}
void AActorBase::RegisterLinkedAssetChangeListener()
{
if (!GEditor) return;
FAssetRegistryModule& AssetRegistryModule = FModuleManager::LoadModuleChecked("AssetRegistry");
IAssetRegistry& AssetRegistry = AssetRegistryModule.Get();
AssetRegistry.OnAssetUpdated().AddUObject(this, &AActorBase::OnLinkedAssetUpdated);
}
void AActorBase::OnLinkedAssetUpdated(const FAssetData& AssetData)
{
// ...
}
#endif
Подробнее здесь: https://stackoverflow.com/questions/798 ... ng-a-level
Мобильная версия