デバッグ用として自作のコンポーネントの変数などをJsonとして外部ファイルに書き出す機能のフィジビリティ検証を行っております。
現在、テスト用として以下のようなUTestComponentを作っています。
`UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class TEST_API UTestComponent : public UActorComponent
{
GENERATED_BODY()
public:
// Sets default values for this component’s properties
UTestComponent();
protected:
// Called when the game starts
virtual void BeginPlay() override;
public:
// Called every frame
virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
public:
UPROPERTY(EditInstanceOnly)
bool IsTestComponent = true;
int TestNum = 0;
FString TestStr = “Test”;
};`<br/>
このフィジビリティ検証の最終目的はこのUTestComponentがついているActorをレベルからすべて取得し、Actor名とUTestComponentのUPROPERTYの変数の値をJsonに変換後、ファイルに書き込みます。(可能であれば、UPROPERTY以外のメンバー変数も書き出したい)
そのため以下のようなUPROPERTYの値を取得する、関数を作っています。(現在、boolのUpropertyをbool型に変換しています。)
<br/>
`void MyTestClass::CreateJsonObject(UTestComponent* simComponennt)
{
UClass* _Class = simComponennt->GetClass();
for (TFieldIterator PropIt(_Class); PropIt; ++PropIt)
{
FProperty* _Property = PropIt;
FString PropertyName = PropIt->GetName();
void CurrentPropAddr = PropIt->ContainerPtrToValuePtr(simComponennt);
UE_LOG(LogTemp, Log, TEXT(“%s”), *PropertyName);
if (FBoolProperty* BoolProp = CastField(_Property))
{
bool BoolValue = BoolProp->GetPropertyValue(CurrentPropAddr);
FString PropertyValue = BoolValue ? TEXT(“true”) : TEXT(“false”);
UE_LOG(LogTemp, Log, TEXT(“Boolean variable %s : %s”), *PropertyName, *PropertyValue);
}
}
}`<br/>
上記のコードを動かすと、UTestComponentの親クラスのUActorComponentの変数なども取得が出来てしまします。
実際きデバッグで確認したい変数はUTestComponentの変数のみなので、UActorComponentの変数は除外したいです。
上記の要求を満たす、実装やAPIなどありますでしょうか?
<br/>
よろしくお願いいたします