2015-07-13 2 views
1

Я ищу способ, чтобы проект имел доступ к предопределенным константам, которые я создам в классе AActor.Отображение констант C++ для чертежей В Unreal

Я по сути хочу, чтобы они сохранили мой код в моих чертежах. Например, в строгом коде, я могу использовать препроцессор макросы, как это:

#define kDirectionUp 0 
#define kDirectionDown 1 

Или я могу просто использовать константы:

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

Тогда позже, вместо того, чтобы вспомнить номер (0..3) и то, что все они относятся, я могу просто набрать

doSomething(kDirectionUp); 

Это не огромная сделка для этого конкретного диапазона, но у меня есть другие, которые имеют около 8 различных номеров, которые все представляют собой диффере t. Это было бы болью иметь дело в чертежах, и не говоря уже о том, что трудно отлаживать и затруднять для любого другого программиста знать, что означает каждое из этих мистических чисел.

Я хочу воспроизвести это поведение в чертежах, чтобы я мог просто вставлять константу в некоторые места, вместо того, чтобы помнить список из 12 или более целых номеров ключей.


Идея заключается в том, чтобы они были статическими, так UPROPERTYs не будет работать здесь (насколько я знаю).

Мои единственные идеи до сих пор заключались в создании функций для каждой константы, которую я могу назвать, просто возвращаю номер, о котором идет речь, но это не самое красивое решение, не говоря уже о том, что им также нужны какие-то параметры , которые в этом случае должны были быть манекенами. Это уродливо.

Есть ли какой-либо способ для меня показывать постоянные значения чертежам в Unreal для достижения этого? В этом случае все они будут целыми числами, но решения, которые работают для других типов данных, являются чрезвычайно оценены.

ответ

0

После того, как вы сделали еще несколько копаний, я обнаружил, что Unreal Blueprints поддерживает перечисление!

Это, похоже, сработало для меня. Необходимость конвертировать из целых чисел в перечисленные значения с помощью скрининга является менее идеальной, но она намного чище, чем необходимость иметь ряд операторов ветвей для проверки целочисленных значений.

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") 
}; 
Смежные вопросы