UE4: Установить текстуру на материал (C ++)

2020-08-01 c++ unreal-engine4

Я новичок в нереальном кодировании, я хочу применить текстуру к материалу, но я застрял в создании:

    UMaterialInterface* Material = CreateDefaultSubobject<UMaterial>(TEXT("MyMaterial"));
    UMaterialInstanceDynamic* DynamicMatierial = UMaterialInstanceDynamic::Create(Material, this);

У меня такое сообщение об ошибке:

NewObject с пустым именем не может использоваться для создания подобъектов по умолчанию (внутри конструктора производного класса UObject), так как он создает несовместимые имена объектов. Вместо этого используйте ObjectInitializer.CreateDefaultSuobject <>.

Эта ошибка исходит из второй строки. Есть идеи, почему возникает эта ошибка? Или есть другой простой способ наложить текстуру на материал?

Answers

Хорошо, я решил эту ошибку, эту строку нельзя использовать в конструкторе:

UMaterialInstanceDynamic* DynamicMatierial = UMaterialInstanceDynamic::Create(Material, this);

Переместите его в PostLoad или другой метод жизненного цикла

После 4 дней поиска я нашел правильный ответ на мою проблему с текстурой в этом посте:

https://forums.unrealengine.com/development-discussion/c-gameplay-programming/46406-how-to-initialize-umaterial-and-assign-texture-to-it#post466817

Related