Полезное

Мы Вконтакте

Discord канал

#
Аватара пользователя
Пользователь
Сообщения: 3
Вечер добрый, делаю простую игрушку по видео урокам. Наткнулся на проблему, на видео все компилируется и работает, а у меня ошибка. Пролистав темы на англоязычных форумах, пришел к выводу, что виновата версия движка, мол с одним из обновлений как то иначе надо работать с AddDynamic(), но как именно я не понял. Проблема в следующем:

Код:
.h

UFUNCTION() void blockClicked(UPrimitiveComponent* ClickedComp);


Последняя строчка метода void AMyBox::createBlock():

Код:
.cpp

   
    void AMyBox::blockClicked(UPrimitiveComponent* ClickedComp)
    {
       randColor();
    }
   
    void AMyBox::createBlock()
    {
       DummyRoot = CreateDefaultSubobject<USceneComponent>(TEXT("Dummy0"));
       RootComponent = DummyRoot;
       class UStaticMesh* BlockStatickMesh;
       BlockStatickMesh = ConstructorHelpers::FObjectFinderOptional<UStaticMesh>(TEXT("StaticMesh'/Game/MyBlock.MyBlock'")).Get();
       BlockMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("BlockMesh0"));
       BlockMesh->SetStaticMesh(BlockStatickMesh);
       TempMaterial = ConstructorHelpers::FObjectFinderOptional<UMaterial>(TEXT("Material'/Game/Blue.Blue'")).Get();
       BlockMesh->SetMaterial(0, TempMaterial);
       BlockMesh->AttachTo(DummyRoot);
       BlockMesh->OnClicked.AddDynamic(this, &AMyBox::blockClicked); //there is no instance of function template //matches the argument list.
    }
Аватара пользователя
Пользователь
Сообщения: 195
Что за код
class UStaticMesh* BlockStatickMesh;
BlockStatickMesh = ConstructorHelpers::FObjectFinderOptional<UStaticMesh>(TEXT("StaticMesh'/Game/MyBlock.MyBlock'")).Get();

Почему нельзя написать красиво
UStaticMesh * BlockStatickMesh = ConstructorHelpers::FObjectFinderOptional<UStaticMesh>(TEXT("StaticMesh'/Game/MyBlock.MyBlock'")).Get();

Попробуй так написать
UFUNCTION()
void blockClicked(UPrimitiveComponent* ClickedComp, FKey ButtonPressed );

Смотри сигнатуру делегата FComponentOnClickedSignature OnClicked;
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams( FComponentOnClickedSignature, UPrimitiveComponent*, TouchedComponent , FKey, ButtonPressed);
Аватара пользователя
Пользователь
Сообщения: 3
gary_cho писал(а):
Что за код
class UStaticMesh* BlockStatickMesh;
BlockStatickMesh = ConstructorHelpers::FObjectFinderOptional<UStaticMesh>(TEXT("StaticMesh'/Game/MyBlock.MyBlock'")).Get();

Почему нельзя написать красиво
UStaticMesh * BlockStatickMesh = ConstructorHelpers::FObjectFinderOptional<UStaticMesh>(TEXT("StaticMesh'/Game/MyBlock.MyBlock'")).Get();

Все от недостатка опыта)

gary_cho писал(а):
Попробуй так написать
UFUNCTION()
void blockClicked(UPrimitiveComponent* ClickedComp, FKey ButtonPressed );

Смотри сигнатуру делегата FComponentOnClickedSignature OnClicked;
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams( FComponentOnClickedSignature, UPrimitiveComponent*, TouchedComponent , FKey, ButtonPressed);


Спасибо большое, все работает.
Аватара пользователя
Пользователь
Сообщения: 26
Очень не советую юзать конструкции типа ConstructorHelpers, тем более как я понял даже не из конструктора!


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница