struct UObject property get cleared in Actor's first Tick

i have defined an UStruct which has an UObject property like this:

USTRUCT(BlueprintType, Blueprintable)
struct X2BASE_API FX2FieldChangeInfo
{
	GENERATED_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = FieldChangeInfo)
	TObjectPtr<UX2FieldChangeBridge> FieldChangeBridge;
}

and the corresponding UX2FieldChangeBridge calss:

UCLASS(BlueprintType)
class X2BASE_API UX2FieldChangeBridge : public UObject
{
	GENERATED_BODY()
}

and have my actor have a TArray property of this struct

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = SaveGame)
	TArray<FX2FieldChangeInfo> FieldChangeInfos;

and init the struct’s UObject in this Actor’s BeginPlay:

FieldChangeBridge = NewObject<UX2FieldChangeBridge>(ThisObject, UX2FieldChangeBridge::StaticClass());
const auto* HostActor = UX2GameLibrary::GetOuterObjectCast<AActor>(ThisObject); // DI1211
if (IsValid(HostActor)) // DI1211
{ // DI1211
	X2_LOG_STATIC(X2WidgetTemplate, Display, TEXT("DI1211, 09360814, NetMode: %s; HostActor: %s; FieldId: %s; FieldChangeBridge: %s"), *ToString(HostActor->GetNetMode()), *UKismetSystemLibrary::GetDisplayName(HostActor), *FieldId.ToString(), *UKismetSystemLibrary::GetDisplayName(FieldChangeBridge))
} // DI1211

which are successfully as the log print out as below:

DI1211, 09360814, NetMode: Dedicated Server; HostActor: BP_WorkBenchBasic; FieldId: X2WorkBenchVM::IsWorking; FieldChangeBridge: X2FieldChangeBridge_0
DI1211, 09360814, NetMode: Dedicated Server; HostActor: BP_WorkBenchBasic; FieldId: X2WorkBenchVM::IsCrafting; FieldChangeBridge: X2FieldChangeBridge_1
DI1211, 09360814, NetMode: Dedicated Server; HostActor: BP_WorkBenchBasic; FieldId: X2WorkBenchVM::IsHandMaking; FieldChangeBridge: X2FieldChangeBridge_2
DI1211, 09360814, NetMode: Dedicated Server; HostActor: BP_WorkBenchBasic; FieldId: X2WorkBenchVM::CraftingItems; FieldChangeBridge: X2FieldChangeBridge_3
DI1211, 09360814, NetMode: Dedicated Server; HostActor: BP_WorkBenchBasic; FieldId: X2WorkBenchVM::CraftingTime; FieldChangeBridge: X2FieldChangeBridge_4

i re-print the struct’s UObject property in this Actor’s Tick, as below:

	for (auto& WorkBenchFieldChangeInfo : FieldChangeInfos) // DI1211
	{ // DI1211
		X2_LOG(X2WorkBenchTemplate, Display, TEXT("DI1211, 09360814, NetMode: %s; Workbench: %s; FieldId: %s; FieldChangeBridge: %s"), *ToString(GetNetMode()), *UKismetSystemLibrary::GetDisplayName(this), *WorkBenchFieldChangeInfo.FieldId.ToString(), *UKismetSystemLibrary::GetDisplayName(WorkBenchFieldChangeInfo.FieldChangeBridge))
	} // DI1211

but all the UObject property is null from the first tick

DI1211, 09360814, NetMode: Dedicated Server; Workbench: BP_WorkBenchBasic; FieldId: X2WorkBenchVM::IsWorking; FieldChangeBridge: 
DI1211, 09360814, NetMode: Dedicated Server; Workbench: BP_WorkBenchBasic; FieldId: X2WorkBenchVM::IsCrafting; FieldChangeBridge: 
DI1211, 09360814, NetMode: Dedicated Server; Workbench: BP_WorkBenchBasic; FieldId: X2WorkBenchVM::IsHandMaking; FieldChangeBridge: 
DI1211, 09360814, NetMode: Dedicated Server; Workbench: BP_WorkBenchBasic; FieldId: X2WorkBenchVM::CraftingItems; FieldChangeBridge:
DI1211, 09360814, NetMode: Dedicated Server; Workbench: BP_WorkBenchBasic; FieldId: X2WorkBenchVM::CraftingTime; FieldChangeBridge: 

the FX2FieldChangeInfo’s FieldChangeBridge will be garbage collected and recycled after sometime, which should never happen.

anyone helps, thanks