UFunction の宣言
UFunction は、Unreal Engine リフレクション システムで認識される C++ 関数です。UObject
またはブループリント関数ライブラリは、ヘッダ ファイルの関数宣言の上の行に UFUNCTION
マクロを入れることにより、メンバー関数を UFunction として宣言することができます。このマクロは、Unreal Engine の関数の解釈と使用方法を変更するために 関数指定子 をサポートします。
UFUNCTION([specifier1=setting1, specifier2, ...], [meta(key1="value1", key2, ...)])
ReturnType FunctionName([Parameter1, Parameter2, ..., ParameterN1=DefaultValueN1, ParameterN2=DefaultValueN2]) [const];
関数指定子を使用すると、UFunctions を ブループリント ビジュアル スクリプティング グラフに公開することができ、デベロッパーは C++ コードを変更せずにブループリント アセットから UFunctions を呼び出したり、拡張したりすることができます。
UFunctions はクラスのデフォルト プロパティで デリゲート にバインドすることができ、アクションをユーザー入力に関連付けるタスクなどを実行させることができます。また、ネットワーク コールバックとしても機能することができます。つまり、UFunction を使って通知を受け取り、任意の変数がネットワーク更新の影響を受けるたびにカスタム コードを実行することができます。
さらに、開発ビルドでゲーム コンソールから呼び出すことができる独自の「コンソール コマンド」(「デバッグ」コマンド、「構成」コマンド、「チート コード」コマンドなどと呼ばれます) を作成したり、レベル エディタでカスタム機能のあるボタンをゲーム オブジェクトに追加したりすることも可能です。
関数指定子
関数を宣言する場合に、エンジンおよびエディタの様々な部分で関数がどのように動作するのかを制御する 関数指定子 を宣言に追加することができます。
関数指定子 |
効果 |
---|---|
|
ネットワーク権限を持つマシン上で (サーバー、Dedicated サーバー、シングル プレイヤー ゲーム) 実行されている場合、この関数はブループリントのコードからのみ実行されます。 |
|
この関数は ブループリント あるいは Level ブループリント グラフで実行可能です。 |
|
この関数は表面上のもので、Dedicated サーバー上では実行されません。 |
|
この関数は ブループリント あるいは Level ブループリント グラフで実行可能です。 |
|
この関数は ブループリント によってオーバーライドされる設計となっていますが、デフォルトのネイティブの実装もあります。メインの関数と同じ名前の関数を追加で宣言しますが、最後に |
|
この関数は所有するオブジェクトに決して影響することはなく、ブループリント あるいは Level ブループリント グラフで実行可能です。 |
|
この関数は、 [Details(詳細)] パネルのボタンを使ってエディタで選択したインスタンス上で呼び出すことができます。 |
|
ブループリント編集ツールに表示されるときの関数のカテゴリを指定します。| 演算子を使用してネストされたカテゴリを定義します。 |
|
この関数は、関数が呼び出されるオブジェクトを所有するクライアント上でのみ実行されます。メインの関数と同じ名前の関数を追加で宣言しますが、最後に |
|
|
|
この関数は、インゲームのコンソールから実行することができます。特定クラス内で宣言される場合のみ、実行コマンドが機能します。 |
|
この関数は、アクタの |
|
この関数はネットワーク上でレプリケートされ、帯域幅やネットワーク エラーに関係なく届くことが保証されます。 |
|
この関数はサブクラスでオーバーライドできません。 |
|
この関数は RPC (リモート プロシージャ コール) サービス要求です。これは |
|
この関数は RPC サービス応答です。これは |
|
この関数はサーバー上でのみ実行されます。メインの関数と同じ名前の関数を追加で宣言しますが、最後に |
|
この関数はネットワーク上でレプリケートされますが、帯域幅の制約やネットワーク エラーが原因で失敗することがあります。 |
|
メインの関数と同じ名前の関数を追加で宣言しますが、最後に |
メタデータ指定子
クラス、インターフェイス、構造体、列挙型変数、列挙型変数の値、関数、プロパティを宣言するときに、メタデータ指定子 を宣言に追加して、エンジンやエディタの様々な側面でどのようにインタラクタするかを制御することができます。データ構造またはメンバのそれぞれの型には、固有のメタデータ指定子のリストがあります。
メタデータはエディタのみに存在しています。メタデータにアクセスするゲーム ロジックを書かないでください。
関数メタ タグ |
効果 |
---|---|
|
コンマで区切られたパラメータのリストが詳細ピンとして表示されます (UI の展開が必要)。 |
|
|
|
|
|
|
|
リストされているパラメータは参照によって渡されますが、ピンが接続されていなければ自動作成されるデフォルトを持ちます。これは配列ピンで使用されるブループリントの便利な機能です。 |
|
ブループリント関数ライブラリから静的な |
|
この関数は内部実装の詳細です。他の関数やノードを実装するために使われます。グラフ内で直接公開されることはありません。 |
|
この関数は、ブループリントで所有しているオブジェクトでのみ呼び出し可能です。他のインスタンス上での呼び出しはできません。 |
|
|
|
|
|
|
|
リストされているパラメータはすべてワイルドカードとして扱われます。この指定子は カスタム |
|
|
|
ブループリントでこの関数を参照すると、関数が非推奨であることを示すコンパイルに関する警告が出ます。 |
|
関数が非推奨であると、それを使用するブループリントをコンパイルしようとすると、このメッセージが標準の非推奨の警告に追加されます。 |
|
関数の戻り値の型は、指定されたパラメーター ピンに接続されている入力に一致するように動的に変更されます。パラメータは |
|
|
|
ブループリント内のこのノード名は、コードが生成する名前の代わりにここで指定する値で置き換えられます。 |
|
|
|
|
|
"self" ピンを隠します。"self" ピンは関数が呼び出されているオブジェクトを示すために使われます。"self" ピンは |
|
|
|
ブループリント グラフで関数を呼び出すノードを配置する場合など、この関数を検索するときに使用可能なキーワード一式を指定します。 |
|
潜在的 (latent) アクションを示します。潜在的アクショには、 |
|
Latent |
|
|
|
|
|
ブループリント関数ライブラリでのみ有効です。この関数は、所有しているクラスの一般的な |
|
親クラスのピッカー ダイアログなどフル ツールチップでは長すぎる場合に短いツールチップを使います。 |
|
コード コメントから自動的に生成されたツールチップをオーバーライドします。 |
|
この関数はアクタの構築中には安全に呼び出すことはできません。 |
|
|
関数パラメータ指定子
パラメータ指定子 |
説明 |
---|---|
Out |
パラメータを参照渡しとして宣言することで、関数による修正を可能にします。 |
Optional |
任意のキーワードを使用すると、呼び出し元が使いやすいように特定の関数パラメータをオプションにすることができます。呼び出し元が指定しないオプション パラメータの値は、関数によって異なります。たとえば、 |
デリゲート
デリゲート は、汎用的かつ型安全な方法で C++ オブジェクトでメンバー関数を呼び出すことができます。デリゲートを使用すると、呼び出し元がオブジェクトのタイプを知らない場合でも、任意のオブジェクトのメンバー関数に動的にバインドされ、未来の時間でオブジェクト上に関数を呼び出すことができます。
リファレンスおよび使用方法に関する情報は、「デリゲート」ページを参照してください。
タイマー
タイマー は、アクションを遅らせたり、ある期間にわたってアクションを実行するためのスケジュールを設定できます。たとえば、パワーアップ アイテムを取得するとプレイヤーは無敵になり、10 秒後に無敵状態を解除したい場合があります。あるいは、プレイヤーが毒ガスの満ちた部屋を移動する間、毎秒 1 回ダメージを与えたい場合があります。このようなアクションは、タイマーを使用することで実現できます。
リファレンスおよび使用方法に関する情報は、「ゲームプレイ タイマー」ページを参照してください。