投稿

8月, 2017の投稿を表示しています

[UE4] UE4.17リリースノートピックアップ

イメージ
今回は、UE4.17の新機能をピックアップして紹介します。この記事は、ドキュメントのリリースノートにもとづいて作成しました。

[UnrealC++]UPROPERTYマークアップされた変数のGetterとSetterが定義可能に ・Native member variables can now make use of uproperty markup to be exposed to Blueprints via ufunction accessors even if the property had been previously exposed directly using BlueprintReadOnly or BlueprintReadWrite markup.

UPROPERTYでマークアップされたネイティブメンバ変数に対して、GetterとSetterを定義できるようになりました。単純なGetとSetでは、変数の値を取得や変更することしか行えませんが、GetterやSetterを使うことで、値の取得や変更の前処理をできるようになりました。例えば、不正な値をはじくといった処理をスマートに記述できるようになります。
GameModeBaseを継承したクラスで、次のようなコードを用意しました。
BlueprintGetterの作り方は、Getterの対象となる変数の型(ここではint32)を返す関数に、UFUNCTIONでBlueprintGetterを指定し、Getterの対象となる変数のUPROPERTYにBlueprintGetter=<Getter関数名>のように記述します。BlueprintSetterも同様に、Setterの対象となる変数の型を引数にもつ関数に対して、UFUNCTIONでBlueprintSetterを指定し、Setterの対象となる変数のUPROPERTYにBlueprintSetter=<Setter関数名>のように記述します。
NumのUPROPERTYにはBlueprintReadOnly/ReadWriteといった指定子がありませんが、指定したときのようにGet/Setノードが現れます。

Get/Setノードが実行されると、Getter/Setter関数が呼び出され、0以上の値になるようなフィル…