int型のUPROPERTYが初期化されない問題

お世話になっております。

UPROPERTYを付いている変数の初期化について質問させて頂きます。

floatやint型の変数にUPROPERTYを付けると自動的に初期値に0が入りますのがこっちらの認識でしたけど、int型に関してはUPROPERTYに付けても初期化されずに不定の値が入ってしまいますので、それは正しい挙動なんでしょうが?

サンプルコードは下記通りです:

// テスト用構造体の定義
USTRUCT(BlueprintType)
struct FTestStruct
{
	GENERATED_USTRUCT_BODY()
public:
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
		int TestValue1;
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
		float TestValue2;
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
		bool TestValue3;

	FTestStruct()
	{
		;
	}
};

// テストコードの実行
	FTestStruct testStruct;
	UE_LOG(LogTemp, Log, TEXT("Initial Value of Test Value1: %d"), testStruct.TestValue1);

	UE_LOG(LogTemp, Log, TEXT("Initial Value of Test Value2: %f"), testStruct.TestValue2);

	UE_LOG(LogTemp, Log, TEXT("Initial Value of Test Value3: %d"), static_cast(testStruct.TestValue3));

上記コードを実行すると「Initial Value of Test Value1」のログが0以外の不定値に入ることを確認できます。

よろしくお願いいたします。

UClassのUPropertyは自動的に0の値で初期化されますが、UStructはそうなりませんので、プロジェクト側で注意をおすすめします。少し気をつけないと行けないことは、UClassの中にあるUStructが0初期化対象だけど、UClassにはないUStructは初期化対象外です。UStructはUClassより軽いなので、機能がより少ないという仕様です。

最近起動時に初期化されていないUPropertyのワーニングを追加しましてデフォルトにオンになっているけど、メイン開発ストリームにまだ入っていないので、4.22になると思います。

普通のC++と同じようにUStructの初期化はプログラマーの責任になります。

よろしくお願いします。

ご返答ありがとうございました!
これを基準に初期化処理を見直していきます。