1

AActor クラスで作成する定義済みの定数にブループリントがアクセスできるようにする方法を探しています。

私は基本的に、設計図でコードをきれいに保つことを望んでいます。たとえば、厳密なコードでは、次のようなプリプロセッサ マクロを使用できます。

#define kDirectionUp 0
#define kDirectionDown 1

または、定数を使用することもできます。

const int kDirectionUp = 0;
const int kDirectionDown = 1;

その後、数字 (0..3) とそれらが何を参照しているかを覚える必要はなく、入力するだけで済みます。

doSomething(kDirectionUp);

これは、この特定の範囲では大したことではありませんが、すべて異なる値を表す約 8 つの異なる数値を持つ他のものがあります。これは、ブループリントで処理するのが面倒であり、言うまでもなく、デバッグが難しく、他のプログラマーがこれらの神秘的な数字の意味を理解するのが難しいことは言うまでもありません。

12 個ほどの整数キー番号のリストを覚える必要がなく、いくつかの場所に定数を差し込めるように、この動作をブループリントで複製したいと考えています。


アイデアはそれらが静的であるため、UPROPERTY はここでは機能しません (私の知る限り)。

これまでの私の唯一のアイデアは、問題の数値を返すだけで呼び出すことができる定数ごとに関数を作成することでしたが、これは最も美しい解決策ではありません。言うまでもなく、ある種のパラメーターも必要です。この場合はダミーでなければなりません。それは醜いです。

これを達成するために Unreal のブループリントに定数値を公開する方法はありますか? この場合、それらはすべて整数になりますが、他のデータ型で機能するソリューションは非常に高く評価されています。

4

1 に答える 1

0

さらに掘り下げた結果、アンリアル ブループリントが列挙をサポートしていることがわかりました。

これは私にとってはうまくいったようです。スクリーニングを介して整数から列挙値に変換する必要があるのは理想的とは言えませんが、整数値をチェックする一連の分岐ステートメントを使用するよりははるかにクリーンです。

UENUM(BlueprintType)
enum class EDirection : uint8
{
    D_Up = 0    UMETA(DisplayName = "Up"),
    D_Right = 1 UMETA(DisplayName = "Right"),
    D_Down = 2  UMETA(DisplayName = "Down"),
    D_Left = 3  UMETA(DisplayName = "Left")
};
于 2015-07-13T10:30:42.473 に答える