Language:
Page Info
Engine Version:

関数

関数の宣言

関数 は、一般的な C++ 関数または UFunction という、 2 つの基本的な形式をとります。C++ 関数も UFunctions.h クラス ヘッダ ファイルで宣言されます。C++ 関数は、関数の宣言に標準の C++ 記法を使います。 UFunctions は、 関数指定子 を使って 関数に関する追加情報を宣言で指定できるようにする特別な記法を使用します。

UFUNCTION([specifier, specifier, ...], [meta(key=value, key=value, ...)])
ReturnType FunctionName([Parameter, Parameter, ...])

UFunctions は C++ 実装があり、C++ コード内から呼び出すことができ、関数ボディに他の C++ 関数や UFunctions への呼び出しを含むことができるという点では C++ 関数と同じように機能します。 ただし、 UFunctions には異なる部分もあります。例えば、 UFunctionsブループリント ビジュアル スクリプティング システムからの呼び出しやオーバーライドが可能です。BlueprintCallableBlueprintCallableBlueprintImplementableEventBlueprintPure の指定子 (詳細は後述の 関数指定子 を参照) を使って宣言された UFunction はブループリントに公開されます。 UFunction はクラスのデフォルト プロパティ内のデリゲートとして割り当てることも可能です。この技術は一般的に、入力動作あるいは入力軸を Input クラスの関数へバインドするために広く使用されます。 UFunction はレプリケーション コールバックとしても使用されます。つまり、関連している変数が変更すると UFunction が呼び出され、ネットワーク全体にレプリケートされます。 UFunction はまた、実行関数として宣言し、プレイ中にインゲームのコンソールからプレイヤーから呼び出すことができる唯一の関数タイプでもあります。

関数指定子

関数を宣言する場合に、エンジンおよびエディタの様々な部分で関数がどのように動作するのかを制御する指定子を宣言に追加することができます。

関数指定子

効果

BlueprintAuthorityOnly

ネットワーク権限を持つマシン上で (サーバー、Dedicated サーバー、シングル プレイヤー ゲーム) 実行されている場合、この関数はブループリントのコードからのみ実行されます。

BlueprintCallable

この関数は ブループリント あるいは Level ブループリント グラフで実行可能です。

BlueprintCosmetic

この関数は表面上のもので、Dedicated サーバー上では実行されません。

BlueprintGetter

この関数はブループリントで公開されたプロパティのアクセサとして使用されます。この指定子は、BlueprintPure および BlueprintCallable であることを意味します。

BlueprintImplementableEvent

この関数は ブループリント あるいは Level ブループリント グラフで実行可能です。

BlueprintInternalUseOnly

関数をエンド ユーザーに公開すべきではないことを示します。

BlueprintNativeEvent

この関数は ブループリント によってオーバーライドされる設計となっていますが、デフォルトのネイティブの実装もあります。メインの関数と同じ名前の関数を追加で宣言しますが、最後に _Implementation が付加されます。これは、どこにコードが書き込まれるかを示しています。自動生成されたコードは、ブループリントのオーバーライドが見つからなければ、"_Implementation" メソッドを呼び出します。

BlueprintPure

この関数は所有するオブジェクトに決して影響することはなく、ブループリント あるいは Level ブループリント グラフで実行可能です。

BlueprintSetter

この関数はブループリントに公開されたプロパティのミューテータとして使用されます。この指定子は、BlueprintCallable であることを意味します。

CallInEditor

この関数は、 [Details(詳細)] パネルのボタンを使ってエディタで選択したインスタンス上で呼び出すことができます。

Category = TopCategory|SubCategory|Etc

ブループリントの編集ツールで表示される場合に、関数のカテゴリを指定します。 | 演算子を使ってネスティングするカテゴリを定義します。

Client

この関数は、関数が呼び出されるオブジェクトを所有するクライアント上でのみ実行されます。メインの関数と同じ名前の関数を追加で宣言しますが、最後に _Implementation が付加されます。自動生成されたコードは、必要に応じて、"_Implementation" メソッドを呼び出します。

CustomThunk

UnrealHeaderTool のコード ジェネレーターはこの関数に対してサンクを生成しません。必要な場合は、コードを記述してください。

Exec

この関数は、インゲームのコンソールから実行することができます。特定クラス内で宣言される場合のみ、実行コマンドが機能します。

NetMulticast

この関数は、アクタの NetOwner に関わらず、サーバー上でローカルで実行、および全てのクライアントにレプリケートされます。

Reliable

この関数はネットワーク上でレプリケートされ、帯域幅やネットワーク エラーに関係なく届くことが保証されます。Client または Server と併用時のみ有効です。

SealedEvent

この関数はサブクラスでオーバーライドできません。SealedEvent キーワードはイベントでのみ使用可能です。イベントではない関数では、 static または final と宣言してシールします。

ServiceRequest

この関数は RPC サービス要求です。

ServiceResponse

この関数は RPC サービス応答です。

Server

この関数はサーバー上でのみ実行されます。メインの関数と同じ名前の関数を追加で宣言しますが、最後に _Implementation が付加されます。これは、どこにコードが書き込まれるかを示しています。自動生成されたコードは、必要に応じて、"_Implementation" メソッドを呼び出します。

Unreliable

この関数はネットワーク上でレプリケートされますが、帯域幅の制約やネットワーク エラーが原因で失敗することがあります。Client または Server と併用時のみ有効です。

WithValidation

メインの関数と同じ名前の関数を追加で宣言しますが、最後に _Validation が付加されます。この関数は同じパラメータを取り、boolを戻して、メイン関数への呼び出しを続行するかどうかを示します。

メタデータ指定子

メタデータ指定子の使用方法は一般的なクラス、関数、インターフェースでは異なります。

関数メタ タグ

効果

AdvancedDisplay="Parameter1, Parameter2, .."

コンマで区切られたパラメータのリストが詳細ピンとして表示されます (UI の展開が必要)。

AdvancedDisplay=N

N を数字で置き換えて、N 番めより後のすべてのパラメータが詳細ピンとして表示されます (UI の展開が必要)。例:'AdvancedDisplay=2' は、最初の 2 つのパラメータを除いて advanced としてマーク付けします)

ArrayParm="Parameter1, Parameter2, .."

BlueprintCallable 関数で Call Array Function ノードを使用し、リストされているパラメータをワイルドカード配列のプロパティとして扱うかを示します。

ArrayTypeDependentParams="Parameter"

ArrayParm を使用する場合、この指定子は ArrayParm リストにあるすべてのパラメータの型を決めるパラメータを示します。

AutoCreateRefTerm="Parameter1, Parameter2, .."

リストされているパラメータは参照によって渡されますが、ピンが接続されていなければ自動作成されるデフォルトを持ちます。これはブループリントの便利な機能です。

BlueprintAutocast

ブループリント関数ライブラリから静的な BlueprintPure 関数によってのみ使用されます。Cast ノードが自動的に戻り型と関数の最初のパラメータの型に追加されます。

BlueprintInternalUseOnly

この関数は内部実装の詳細です。他の関数やノードを実装するために使われます。グラフ内で直接公開されることはありません。

BlueprintProtected

この関数は、ブループリントで所有しているオブジェクトでのみ呼び出し可能です。他のインスタンス上での呼び出しはできません。

CallableWithoutWorldContext

WorldContext ピンを持つ BlueprintCallable 関数のために使われ、そのクラスが GetWorld 関数を実装していなくても呼び出し可能であることを示します。

CommutativeAssociativeBinaryOperator

BlueprintCallable 関数が、Commutative Associative Binary ノードを使用すべきであることを示します。このノードにはピン名がありませんが、追加の入力ピンを作成する "Add Pin" ボタンがあります。

CompactNodeTitle="Name"

BlueprintCallable 関数をコンパクト表示モードで表示することを示し、モード内で表示する名前を指定します。

CustomStructureParam="Parameter1, Parameter2, ..")

リストされているパラメータはすべてワイルドカードとして扱われます。この指定子は UFUNCTION-レベル指定子、CustomThunk を必要とし、カスタム exec 関数をユーザーが指定する必要があります。この関数では、パラメータの型をチェック可能で、型に基づき適切な関数呼び出しを行うことができます。ベースとなる UFUNCTION は呼び出されません。呼び出された場合はアサートするかエラーを出力します。

DefaultToSelf

BlueprintCallable 関数では、オブジェクトのプロパティの名前付けしたデフォルト値は、ノードの self コンテキストになります。

DeprecatedFunction

ブループリントでこの関数を参照すると、関数が非推奨であることを示すコンパイルに関する警告が出ます。DeprecationMessage メタデータ指定子を使って非推奨の警告メッセージに追加することができます (例、非推奨の関数を置き換える旨の指示を表示)。

DeprecationMessage="Message Text"

関数が非推奨であると、それを使用するブループリントをコンパイルしようとすると、このメッセージが標準の非推奨の警告に追加されます。

DisplayName="Blueprint Node Name"

ブループリント内のこのノード名は、コードが生成する名前の代わりにここで指定する値で置き換えられます。

ExpandEnumAsExecs="Parameter"

BlueprintCallable 関数で、ある入力実行ピンがパラメータが使用する enum で各エントリに対して作成されることを示します。この名前付けしたパラメータは UENUM タグでエンジンが認識する列挙型でなければなりません。

HidePin="Parameter"

BlueprintCallable 関数で、このパラメータ ピンをユーザーから見えないようにします。この方法では関数毎にひとつのパラメータ ピンのみを非表示にできることに注意してください。

KeyWords="Set Of Keywords"

ブループリント グラフで関数を呼び出すノードを配置する場合など、この関数を検索するときに使用可能なキーワード一式を指定します。

Latent

潜在的 (latent) アクションを示します。潜在的アクショには、FLatentActionInfo 型のパラメータをひとつ持ち、このパラメータは LatentInfo 指定子で名前付けされます。

LatentInfo="Parameter"

Latent BlueprintCallable 関数では、どれが LatentInfo パラメータであるかを示します。

MaterialParameterCollectionFunction

BlueprintCallable 関数では、マテリアル オーバーライド ノードを使わないことを示します。

NativeBreakFunc

BlueprintCallable 関数では、標準の Break Struct ノードと同じように表示されることを示します。

NotBlueprintThreadSafe

ブループリント関数ライブラリでのみ有効です。この関数は、所有しているクラスの一般的な BlueprintThreadSafe メタデータの例外として扱われます。

ShortToolTip

親クラスのピッカー ダイアログなどフル ツールチップでは長すぎる場合に短いツールチップを使います。

ToolTip

コード コメントから自動的に生成されたツールチップをオーバーライドします。

UnsafeDuringActorConstruction

この関数はアクタの構築中には安全に呼び出すことはできません。

WorldContext="Parameter"

BlueprintCallable 関数によって使用され、オペレーションが起こるワールドをどのパラメータが決めるかを示します。

関数パラメータ指定子

Out
Optional

関数の実装

クラス ヘッダ ファイルで宣言された関数は、クラス ソース ファイルで定義を与えられます。

デリゲート

デリゲートは、汎用的でありながら型安全な方法で C++ オブジェクト上でメンバ関数の呼び出しを可能にします。デリゲートを使用すると、呼び出す側がオブジェクトの型を知らない場合でも、任意のオブジェクトのメンバ関数を動的に結合し、 オブジェクト上で関数を呼び出すことができます。

デリゲート オブジェクトは完全に安全にコピーできます。デリゲートは値渡しすることができますが、 ヒープ上にメモリを割り当てる必要があるので通常はお勧めしません。可能な限り、デリゲートは常に参照渡しが望ましいです。

安全にディスクにシリアライズできる動的デリゲートに加え、シングルキャスト デリゲートとマルチキャスト デリゲートにも対応しています。

リファレンスおよび使用方法に関する情報は デリゲート をご覧ください。

タイマー

タイマー は、アクションを遅らせる、もしくはある期間に渡って発生させる際に使用します。プレイヤーがパワーアップ アイテムを取得した 10 秒後に、無敵キャラクターとなり、10秒後に弱くなる例が挙げられます。プレイヤーが毒ガスで充満した部屋に入ると、 1 秒おきにダメージを与える例もあります。これらはタイマーを使用して実現します。

リファレンスおよび使用方法に関する情報は ゲームプレイ タイマー をご覧ください。