Language:
Page Info
Engine Version:
The translation of this page is out of date. Please see the English version for the latest version of the page.

関数

関数の宣言

関数 は、一般的な 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 はまた、実行関数として宣言し、プレイ中にインゲーム コンソールからプレイヤーから呼び出すことができる唯一の関数タイプでもあります。

関数指定子

関数を宣言する場合に、各種アスペクトでの関数がどのように動作するのか制御する指定子を宣言に追加することができます。

メタデータ指定子

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

関数は以下のメタタグ指定子を使用することができます。

関数パラメータ指定子

Out

パラメータをリファレンスにより渡されるように宣言することで、関数による修正を可能にします。

Optional

任意のキーワードを使えば、呼び出し元が使いやすいように、ある関数パラメータを任意にすることができます。呼び出し元が指定しない場合、任意のパラメータの値は関数によって異なります。 例えば、 SpawnActor 関数は任意の位置と回転を受け取り、デフォルトでそれがスポーンしているアクタのルート コンポーネントの位置と回転になります。任意の引数のデフォルト値は = [value] を追加することにより指定できます。例えば、 function myFunc(optional int x = -1) です。任意のパラメータへ何も値が渡されない場合は、変数タイプのデフォルト値またはゼロ (0 、 false 、 "" 、 none)
を使用するケースがほとんどです。

関数の実装

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

デリゲート

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

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

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

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

タイマー

タイマーを使用して、指定したインターバルでアクションを一度もしくは繰り返し実行することができます。タイマーは アクションを遅らせてもしくはある期間に渡って発生させる際に使用します。例えば、 プレイヤーがあるアイテムを取得したその 10 秒後に、無敵キャラクターとなる例が挙げられます。もしくは、 プレイヤーが毒ガスで充満した部屋に入ると、 1 秒おきにダメージを受ける場合などです。いずれの場合も タイマーを使用して実現します。

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