Нереальный двигатель UPROPERTY TsubclassOf не распознан - PullRequest
0 голосов
/ 28 октября 2018

Когда я создал подкласс ActorComponent c ++ с TSubclassOf UPROPERTY и установил этот класс в светокопии, я не могу читать это свойство в конструкторе c ++.В .h файле у меня есть это:

protected:
    UPROPERTY(EditAnywhere, Category = "Setup")
        TSubclassOf<UBaseSkill> PrimarySkillClass;

И это в .cpp:

USkillSet::USkillSet()
{
if(PrimarySkillClass.Get())
    {
        UE_LOG(LogTemp, Warning, TEXT("Creating skill"));
    }
    else
    {
        UE_LOG(LogTemp, Error, TEXT("No skill class"));
    }
}

В BP я устанавливаю класс: Скриншот BP поэтому PrimarySkillClass.Get () должен возвращать true, но я получаю «Нет навыков» в журнале.Почему и как я мог это исправить?

1 Ответ

0 голосов
/ 28 октября 2018

Конструктор - это первый метод, который когда-либо вызывался для объекта, он существует на ранних этапах жизни UObject. Свойства, значения из чертежей и компонентов инициализируются впоследствии.

Так что вы должны получить к ним доступ позже, либо в UObject :: PostInitProperties () , либо в BeginPlay (), если еще не слишком поздно для вашей цели.

Редактировать: интересное чтение на UObject Constructor, PostInitProperties и PostLoad

...