0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【UE4】BlueprintFunctionLibraryの記述と出来上がるノード一覧

Last updated at Posted at 2022-01-04

#本記事について
BlueprintFunctionLibrary について、引数と返り値をどう記述すればどういう入出力の Blueprint ノードが出来上がるのかをまとめたものです。
主に筆者個人用です。

記述できる型は直型か参照型のみで、ポインタ型を記述するとビルドエラーになります。
Blueprint 上でポインタを扱えないためだと思われます。

また、関数の引数名を「ReturnValue」(大文字小文字問わず) とした場合もビルドエラーになります。
ノード化される際、内部で定義している名称と衝突してしまうようです。
(retval などなら OK)

#実例
##基本

BlueprintCallable 設定の関数のみとしています。
それ以外の設定は探せば出てくるので……

関数は宣言のみ記載しています(実装自体は空っぽです)。

記述 結果
void ( void ) screenshot.2.png
実装コード
	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static void VoidReturnVoidArgFunc();

何も入出力しないやつです。
作り方系のドキュメントに多い。

##プリミティヴ型、引数の場合

記述 結果
void ( int ) screenshot.3.png
void ( const int ) screenshot.5.png
void ( int & ) screenshot.4.png
void ( const int & ) screenshot.6.png
実装コード
	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static void VoidReturnIntArgFunc( int32 Value );

	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static void VoidReturnConstIntArgFunc( const int32 Value );

	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static void VoidReturnRefIntArgFunc( int32 & Value );

	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static void VoidReturnConstRefIntArgFunc( const int32 & Value );

const 無し参照のみ出力扱いになります。
BP は返り値が複数存在可能なのはこのため(?)

##プリミティヴ型、返り値の場合

記述 結果
int ( void ) screenshot.7.png
const int ( void ) screenshot.9.png
int & ( void ) screenshot.8.png
const int & ( void ) screenshot.10.png
実装コード
	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static int32 IntReturnVoidArgFunc();

	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static const int32 ConstIntReturnVoidArgFunc();

	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static int32 & RefIntReturnVoidArgFunc();

	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static const int32 & ConstRefIntReturnVoidArgFunc();

返り値はすべて出力扱いになるようです。

##複合型、引数の場合
FParameter は 別記事 内で作成していた USTRUCT になります。

記述 結果
void ( FParameter ) screenshot.11.png
void ( const FParameter ) screenshot.13.png
void ( FParameter & ) screenshot.12.png
void ( const FParameter & ) screenshot.14.png
実装コード
	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static void VoidReturnParamArgFunc( FParameter Param );

	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static void VoidReturnConstParamArgFunc( const FParameter Param );

	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static void VoidReturnRefParamArgFunc( FParameter & Param );

	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static void VoidReturnConstRefParamArgFunc( const FParameter & Param );

プリミティヴ型のそれと変わらないようです。

##複合型、返り値の場合

記述 結果
FParameter ( void ) screenshot.15.png
const FParameter ( void ) screenshot.17.png
FParameter & ( void ) screenshot.16.png
const FParameter & ( void ) screenshot.18.png
実装コード
	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static FParameter ParamReturnVoidArgFunc();

	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static const FParameter ConstParamReturnVoidArgFunc();

	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static FParameter & RefParamReturnVoidArgFunc();

	UFUNCTION( BlueprintCallable, Category = "MyPlugin Sample Func" )
	static const FParameter & ConstRefParamReturnVoidArgFunc();

こちらもプリミティヴ型と変わらずですが、複合型の値渡しはさすがにやめたほうがいいので上2つはナシ……

#まとめ

Blueprint ノードを C++ で組むにあたって、記述によって入出力が異なるためすべて列挙してみました。
引数では const 無し参照型のみ出力ピンとなります。
処理自体の成功失敗判定を bool や errno_t 的な返り値に統一し、処理結果を受け取るのを const 無し参照型とするのがよいかもしれません。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?