TMapのAssertion Failed

TMap型の変数を保持し、getterとsetterを提供するクラスがあります。
それをキャラクタに持たせ、Tick関数でGetterを呼び出し続けていると

Assertion failed: Pair != nullptr [File:C:\Epic Games\4.14\Engine\Source\Runtime\Core\Public\Containers\Map.h] [Line: 522]

が表示され、エディタがクラッシュしてしまうのですが何か原因や解決法をご存じの方はいらっしゃいますでしょうか?

以下ソースコードです。

MyCharacter.h

#pragma once

#include "GameFramework/Character.h"
#include "MyCharacter.generated.h"

UCLASS()
class ASSERTIONTEST_API AMyCharacter : public ACharacter
{
	GENERATED_BODY()

private:
	class UWorldState* MyState;

public:
	// Sets default values for this character's properties
	AMyCharacter();

	// Called when the game starts or when spawned
	virtual void BeginPlay() override;
	
	// Called every frame
	virtual void Tick( float DeltaSeconds ) override;

	// Called to bind functionality to input
	virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;

	
	
};

MyCharacter.cpp

#include "AssertionTest.h"
#include "MyCharacter.h"

#include "WorldState.h"

#include "Engine.h"

// Sets default values
AMyCharacter::AMyCharacter()
{
 	// Set this character to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

}

// Called when the game starts or when spawned
void AMyCharacter::BeginPlay()
{
	Super::BeginPlay();

	MyState = NewObject<UWorldState>();

	MyState->SetVariable( FString( "TEST" ), true );

}

// Called every frame
void AMyCharacter::Tick( float DeltaTime )
{
	Super::Tick( DeltaTime );

	if ( MyState->GetVariable( FString( "TEST" ) ) )
	{
		GEngine->AddOnScreenDebugMessage( -1, 5.f, FColor::Cyan, TEXT( "COMPLETE TASKS" ) );
	}
}

// Called to bind functionality to input
void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);

}

WorldState.h

#pragma once

#include "UObject/NoExportTypes.h"
#include "WorldState.generated.h"

/**
 * 
 */
UCLASS()
class ASSERTIONTEST_API UWorldState : public UObject
{
	GENERATED_BODY()
	
private:
	TMap<FString, bool> StateMap;
	
public:

	void SetVariable( FString key, bool value );

	bool GetVariable( FString key );
};

WorldState.cpp

#include "AssertionTest.h"
#include "WorldState.h"


void UWorldState::SetVariable( FString key, bool value )
{
	StateMap.Add( key, value );
}

bool UWorldState::GetVariable( FString key )
{
	return StateMap[key];
}

ガベージコレクトにやられているので以下のようにして下さい。

UPROPERTY()
class UWorldState* MyState;

こちらも合わせて確認してみてください。

link text

回答していただきありがとうございます。

回答の通りMyStateの方がGCの対象となっていたのが原因でした。

UPROPERTYに加えAddToRootをすることで解決しました。

ありがとうございました。