TSubclassOf

Windows
MacOS
Linux

TSubclassOf は UClass 型に安全性を提供するテンプレート クラスです。例えば、デザイナーがダメージタイプを指定できる Projectile クラスを作成しているとします。タイプ UClass の UPROPERTY を作成して、デザイナーが常に UDamageType から派生したクラスをアサインしてくれるよう期待するか、もしくは TSubclassOf テンプレートを使って強制的に選択するようにします。次のサンプル コードでその違いが分かります。

/** type of damage */
UPROPERTY(EditDefaultsOnly, Category=Damage)
UClass* DamageType;

Vs.

/** type of damage */
UPROPERTY(EditDefaultsOnly, Category=Damage)
TSubclassOf<UDamageType> DamageType;

2 つ目の宣言で、プロパティの選択肢として UDamageType から派生したクラスのみをリストするように、エディタのプロパティ ウィンドウに指示しています。最初の宣言では、どの UClass も選択することができます。それを表した画像がこちらです。

image alt text

StrategyGame の Projectile ブループリントからの画像です。

この UPROPERTY 安全性に加えて、C++ レベルでの型安全性も提供されています。互換性のない TSubclassOf タイプをお互いにアサインしようとすると、コンパイル エラーが発生します。汎用の Uclass をアサインしようとすれば、アサインメントが可能であることを検証するためにランタイム チェックが実行されます。ランタイム チェックが失敗すると、値が nullptr となります。

UClass* ClassA = UDamageType::StaticClass();

TSubclassOf<UDamageType> ClassB;

ClassB = ClassA; // Performs a runtime check

TSubclassOf<UDamageType_Lava> ClassC;

ClassB = ClassC; // Performs a compile time check

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信